要求有一个 abstract 类,类名为 Employee。Employee 的子类有 YearWorker、MonthWorker、WeekWorker。YearWorker 对象按年领取薪水,MonthWorker 按月领取薪水,WeekWorker 按周领取薪水。Employee 类有一个 abstract 方法:
public abstract double earnings();
子类必须重写父类的 earnings()方法,给出各自领取报酬的具体方式。有一个 Company 类,该类用 Employee 对象数组作为成员,Employee 对象数组的单元可以是 YearWorker 对象的上转型对象、MonthWorker 对象的上转型对象或 WeekWorker 对象的上转型对象。程序能输出 Company 对象一年需要支付的薪水总额。
abstract class Employee {
public abstract double earnings();
}
class YearWorker extends Employee {
int YearWorker;
double yearSalary;
YearWorker(int y, double s){
YearWorker = y;
yearSalary = s;
}
public double earnings(){
return YearWorker * yearSalary;
} //重写earnings()方法
}
class MonthWorker extends Employee {
int MonthWorker;
double monthSalary;
MonthWorker(int m, double s){
MonthWorker = m;
monthSalary = s;
}
public double earnings(){
return MonthWorker * monthSalary;
} //重写earnings()方法
}
class WeekWorker extends Employee {
int WeekWorker;
double weekSalary;
WeekWorker(int w, double s){
WeekWorker = w;
weekSalary = s;
}
public double earnings(){
return WeekWorker * weekSalary;
} //重写earnings()方法。
}
class Company {
Employee[] employee;
double salaries=0;
Company(Employee[] employee) {
this.employee=employee;
}
public double salariesPay() {
salaries=0;
salaries = employee[0].earnings() + employee[1].earnings() + employee[2].earnings();
//计算salaries。
return salaries;
}
}
public class CompanySalary {
public static void main(String args[]) {
Employee[] employee=new Employee[29]; //公司有29名雇员
for(int i=0;i<employee.length;i++) { //雇员简单地分成三类
if(i%3==0)
employee[i]=new WeekWorker(16,1200.0);
else if(i%3==1)
employee[i]=new MonthWorker(11,8000.0);
else if(i%3==2)
employee[i]=new YearWorker(2,120000.0);
}
Company company=new Company(employee);
System.out.println("公司薪水总额:"+company.salariesPay()+"元");
}
}