抽象方法和构造函数

时间:2015-03-08 16:17:16

标签: java

首先,这不是一个任务问题。这是过去试卷中的修订问题。

好的,问题是:

实现一个名为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;
    }

}

所以我的问题是,如何将每位员工的不同参数传递给收入方法,以便我可以计算他们的收入?

1 个答案:

答案 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);
    }
}

基类只是声明有一种返回每周收入的方法。子类提供了自己的方法版本,每个子类都可以以完全不同的方式实现该方法。