我正在尝试使用一个抽象类Employee
,它具有两个子类HourlyEmployee
和AnnualEmployee
。在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;
}
}
该错误表明
HourlyEmployee
和AnnualEmployee
都不是抽象的,因此无法覆盖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();