我正在尝试使用一个抽象类Employee,它具有两个子类HourlyEmployeeAnnualEmployee。在Employee类中,我有一个抽象方法:

员工类别:

public abstract class Employee{
    public abstract double computePay();
}

HourlyEmployee类别:
public class HourlyEmployee extends Employee{
    public double computePay(double rate, double hours){
        double monthlySalary;
        monthlySalary = ((rate * hours) * 52) / 12;
        return monthlySalary;
    }
}

年度员工类别:
public class AnnualEmployee extends Employee{
    public double computePay(double salary){
        double monthlySalary;
        monthlySalary = salary / 12;
        return monthlySalary;
    }
}

该错误表明HourlyEmployeeAnnualEmployee都不是抽象的,因此无法覆盖computePay()中的抽象方法Employee

我不明白为什么我不能为此方法提供两个不同的参数。由于我无法执行此操作,该如何解决?

最佳答案

您必须在double computePay()HourlyEmployee类中实现AnnualEmployee。必须使方法签名与类Employee相同

为了改善您的代码,您可以将HourlyEmployee构造函数声明为

public HourlyEmployee(double rate, double hours){
    this.rate = rate;
    this.hours = hours;
    ...
}

public double computePay(){
    //use this.rate and this.hours here...
}

您可以在实例化HourlyEmployee实例时传递速率(小时)
Employee hourlyEmployee = new HourlyEmployee(21.5, 7.5);
hourlyEmplyee.computePay();

09-16 00:36