要求有一个abstract类,类名为Employee。 Employee的子类有 YearWorker, Month Worker,WeekWorker。 YearWorker对象按年领取薪水, MonthWorker按月领取薪水, WeekWorker按周领取薪水。Employee类有一个abstract方法: public abstract earnings(); 子类必须重写父类的eanings()方法,给出各自领取薪水的具体方式。 按年领取薪水的计算方法是:12000 按月领取薪水的计算方法是:12*2300 按周领取薪水的计算方法是:52*780 另外有一个Company类,该类用Employee对象数组作为成员, Employee对象数组的 单元可以是YearWorker对象的上转型对象、MonthWorker对象的上转型对象或 WeekWorker对象的上转型对象。程序能输出Company对象一年需要支付的薪水总额。即 Company需要一个带参的构造方法来初始化Employee数组,需要提供public double salariesPay()方法计算公司一年需要支付的薪水总额,并返回。
时间: 2024-02-19 21:03:19 浏览: 65
我发现我的前面回答中似乎出现了误解,没有考虑到三个子类的具体实现,非常抱歉。下面给出修改后的代码:
```
abstract class Employee {
public abstract double earnings();
}
class YearWorker extends Employee {
@Override
public double earnings() {
return 12000;
}
}
class MonthWorker extends Employee {
@Override
public double earnings() {
return 12 * 2300;
}
}
class WeekWorker extends Employee {
@Override
public double earnings() {
return 52 * 780;
}
}
class Company {
private Employee[] employees;
public Company(Employee... employees) {
this.employees = employees;
}
public double salariesPay() {
double sum = 0;
for (Employee employee : employees) {
sum += employee.earnings();
}
return sum;
}
}
```
上述代码中,我们定义了一个`Employee`抽象类,它有一个抽象方法`earnings()`,并且它的三个子类`YearWorker`、`MonthWorker`和`WeekWorker`分别实现了自己领取薪水的方式。在`Company`类中,我们用一个`Employee`对象数组作为成员,并提供了一个带参的构造方法来初始化该数组。另外,我们还提供了一个`salariesPay()`方法来计算公司一年需要支付的薪水总额。
阅读全文