Java:如何使用Abstract类

Mon*_*nil 3 java abstract-class abstract

我试图使用一个Abstract类Employee,它有两个子类,HourlyEmployeeAnnualEmployee.在Employee课堂上我有一个抽象的方法:

员工类:

public abstract class Employee{
    public abstract double computePay();
}
Run Code Online (Sandbox Code Playgroud)

每小时雇员班级:

public class HourlyEmployee extends Employee{
    public double computePay(double rate, double hours){
        double monthlySalary;
        monthlySalary = ((rate * hours) * 52) / 12;
        return monthlySalary;
    }
}
Run Code Online (Sandbox Code Playgroud)

年度员工类:

public class AnnualEmployee extends Employee{
    public double computePay(double salary){
        double monthlySalary;
        monthlySalary = salary / 12;
        return monthlySalary;
    }
}
Run Code Online (Sandbox Code Playgroud)

错误说没有HourlyEmployee,也不AnnualEmployee是抽象的,因此不能重写抽象方法computePay()Employee.

我不明白为什么我不能为这种方法提供两个不同的参数.由于我无法做到这一点,我该如何解决这个问题呢?

Hai*_*ang 6

你必须实现double computePay()在课堂上HourlyEmployeeAnnualEmployee.必须保持方法签名与类相同Employee

要改进代码,可以将HourlyEmployee构造函数声明为

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

public double computePay(){
    //use this.rate and this.hours here...
}
Run Code Online (Sandbox Code Playgroud)

您可以在实例化HourlyEmployee实例时传递速率,小时数

Employee hourlyEmployee = new HourlyEmployee(21.5, 7.5);
hourlyEmplyee.computePay();
Run Code Online (Sandbox Code Playgroud)