要求设计abstract类,类名为Employee,类内有抽象方法earning(),功能是计算工资。Employee的子类有YearWorker,MonthWorker,WeekWorker。YearWorker对象按年领取薪水,每年年薪6万,MonthWorker按月领取薪水,每月3000元,Weekworker按周领取薪水,每周500元。有一个Company类,该类有两个属性,一个是用Employee数组作为属性,存放所有的员工,一个是salaries属性,存放该公司每年该支付的总薪水,paySalaries方法能计算一年需支付的薪水总额。测试类定义29名员工,员工编号0 - 28,能被三整除的员工位WeekWorker,除3余数为1的为MonthWorker,除3余数为2的为YearWorker,测试类输出该公司支付总金额
时间: 2024-03-05 17:49:23 浏览: 21
好的,我来为您解答这个问题。
首先,我们需要在Employee类中定义一个抽象方法earning(),用于计算工资。代码如下:
```java
public abstract class Employee {
public abstract double earning();
}
```
然后,我们需要创建三个子类YearWorker、MonthWorker、WeekWorker,分别表示按年、按月、按周领取薪水的员工。这三个子类分别继承自Employee类,并实现其earning()方法,用于计算工资。代码如下:
```java
public class YearWorker extends Employee {
public double earning() {
return 60000;
}
}
public class MonthWorker extends Employee {
public double earning() {
return 3000;
}
}
public class WeekWorker extends Employee {
public double earning() {
return 500;
}
}
```
接下来,我们需要创建一个Company类,该类有一个Employee数组作为属性,存放所有的员工,一个salaries属性,存放该公司每年该支付的总薪水。该类还需要一个方法paySalaries(),用于计算一年需支付的薪水总额。代码如下:
```java
public class Company {
private Employee[] employees;
private double salaries;
public Company(Employee[] employees) {
this.employees = employees;
}
public double paySalaries() {
double total = 0;
for (int i = 0; i < employees.length; i++) {
total += employees[i].earning();
}
salaries = total;
return salaries;
}
}
```
最后,我们需要在测试类中创建29名员工,员工编号0 - 28,能被三整除的员工位WeekWorker,除3余数为1的为MonthWorker,除3余数为2的为YearWorker。然后创建一个Company对象,将员工数组传入Company对象中,并调用paySalaries()方法计算该公司需支付的总薪水。代码如下:
```java
public class Test {
public static void main(String[] args) {
Employee[] employees = new Employee[29];
for (int i = 0; i < employees.length; i++) {
if (i % 3 == 2) {
employees[i] = new YearWorker();
} else if (i % 3 == 1) {
employees[i] = new MonthWorker();
} else {
employees[i] = new WeekWorker();
}
}
Company company = new Company(employees);
double salaries = company.paySalaries();
System.out.println("该公司支付总金额为:" + salaries);
}
}
```
以上就是代码实现,您可以在测试类中执行该程序,查看输出结果。希望能帮助到您!