经典实例(雇员类)

作者在 2008-07-15 11:27:32 发布以下内容
public class TestEmployee{
 public static void main(String[] args){
  Employee[] employees=new Employee[4];
  employees[0]=new SalariedEmployee("liuzhaobin",3,800);
  employees[1]=new HourlyEmployee("li4",4,30,100);
  employees[2]=new SalesEmployee("wang5",5,100000,0.2);
  employees[3]=new BasePlusSalesEmployee("wei6",6,100000,0.1,1000);
  for(int i=0;i<employees.length;i++){
   System.out.println(employees[i].getSalary(3)); 
  }
  
 } 
}
class Employee{
 private String name;
 private int month;
 public Employee(){}
 public Employee(String name,int month){
  this.name=name;
  this.month=month;
 }
 
 public String getName(){
  return this.name; 
 }
 
 public int getMonth(){
  return this.month; 
 }
 
 public double getSalary(int month){
  if(this.month==month){
   return 100;
  }else{
   return 0; 
  }
 }
}
class SalariedEmployee extends Employee{
 private int salary;
 public SalariedEmployee(){}
 public SalariedEmployee(String name,int month,int salary){
  super(name,month);
  this.salary=salary;
 }
 public double getSalary(int month){
  return  salary+super.getSalary(month);
 }
}
class HourlyEmployee extends Employee{
 private int salary;
 private int hours;
 public HourlyEmployee(){}
 public HourlyEmployee(String name,int month,int salary,int hours){
  super(name,month);
  this.salary=salary;
  this.hours=hours;
 }
 public double getSalary(int month){
  if(hours>160){
   return (160*salary)+((hours-160)*salary*1.5)+super.getSalary(month);
  }
  return hours*salary;
 }
}
class SalesEmployee extends Employee{
 private int saleMoney;
 private double rote;
 public SalesEmployee(){}
 public SalesEmployee(String name,int month,int saleMoney,double rote){
  super(name,month);
  this.saleMoney=saleMoney;
  this.rote=rote;
 }
 public double getSalary(int month){
  return (saleMoney*rote)+super.getSalary(month);
 }
}
class BasePlusSalesEmployee extends SalesEmployee{
 private int salary;
 public BasePlusSalesEmployee(){}
 public BasePlusSalesEmployee(String name,int month,int saleMoney,double rote,int salary){
  super(name,month,saleMoney,rote);
  this.salary=salary;
 }
 public double getSalary(int month){
  return salary+super.getSalary(month);
 }
}
java | 阅读 3935 次
文章评论,共0条
游客请输入验证码
浏览17182次
最新评论