首先,这不是一个任务问题。这是过去试卷中的修订问题。
好的,问题是:
实现一个名为Employee的抽象基类,用于保存和 访问有关员工的基本信息,例如姓名,地址等。本课程 还应该定义一个名为earnings()的抽象方法,它返回每周一次 支付每种类型的员工。该类应包括一个合适的构造函数 和访问器方法来检索有关员工的信息。
我到目前为止的代码是:
abstract public class Employee {
public String Full_Name;
public int IDNum;
public String FullAddress;
public int hours_worked;
public int hour_pay;
Employee(String name, int ID, String Address){
Full_Name = name;
IDNum = ID;
FullAddress = Address;
}
abstract public int earnings(){
return int week_Sal = hours_worked*hour_pay;
}
}
所以我的问题是,如何将每位员工的不同参数传递给收入方法,以便我可以计算他们的收入?
答案 0 :(得分:1)
在java中,抽象方法声明不包含方法体。您只需声明该方法应该存在;该类的非抽象子类必须提供该方法的一个版本。
这是问题所在的一个例子:
abstract public class Employee {
public String Full_Name;
public int IDNum;
public String FullAddress;
Employee(String name, int ID, String Address){
Full_Name = name;
IDNum = ID;
FullAddress = Address;
}
abstract public int earnings();
}
public class HourlyEmployee extends Employee {
private int hours_worked;
private int hour_pay;
HourlyEmployee(String name, int ID, String Address, int hour_pay) {
super(name, ID, Address);
this.hour_pay = hour_pay;
}
public void setHoursWorked(int hours_worked) {
this.hours_worked = hours_worked;
}
@Override
public int earnings() {
return hours_worked * hour_pay;
}
}
public class CEO extends Employee {
private long year_pay;
CEO(String name, int ID, String Address, long year_pay) {
super(name, ID, Address);
this.year_pay = year_pay;
}
@Override
public int earnings() {
// Convert yearly pay to weekly pay
return (int) (year_pay / 52);
}
}
基类只是声明有一种返回每周收入的方法。子类提供了自己的方法版本,每个子类都可以以完全不同的方式实现该方法。