【发布时间】:2015-10-26 00:09:12
【问题描述】:
我的任务:
编写一个名为SeniorWorker的类,它继承自Employee类,除了name、salary和overtimePay之外,它添加了一个名为double的类型数据meritPay,其计算公式为工资的10%。它覆盖earning() 和toString 方法来计算SeniorWorker 的总工资并分别返回SeniorWorker 的正确数据。
澄清:作业让我们使用书中的一些示例代码(Employee、RegularWorker、Manager、SeniorManager.java)。我的问题是SeniorWorker 类从Employee 类继承所有这些变量,但是Employee 类仅包括名称变量,除meritPay 之外的其余变量都在RegularWorker 类中,这是为什么我想知道我是否可以同时继承 Employee 类和 RegularWorker 或者我需要做其他事情吗?
代码:
public class Employee {
private String name;
// Constructor
public Employee(String name ) {
this.name = name;
}
public String getName()
{ return name; }
public double earnings(){return 0.0;}
}
public class RegularWorker extends Employee {
protected double salary, overtimePay;
public RegularWorker( String name, double salary, double overtimePay) {
super( name ); // call superclass constructor
this.salary = salary;
this.overtimePay = overtimePay;
}
public double earnings() { return salary + overtimePay; } //override the method to return salary
public String toString() { //override the method to print the name
return "Regular worker: " + getName();
}
}
我的班级: 到目前为止,我只是求助于从普通工人类继承(并且它有效),但是任务说我应该从雇员类继承。
public class SeniorWorker extends RegularWorker {
public double meritPay;
public SeniorWorker(String name, double salary,double overtimePay, double meritPay)
{
super(name,salary,overtimePay);
this.meritPay = meritPay;
}
public double getMeritPay() {
return meritPay;
}
public void calculateMeritPay(){
meritPay = 0.10 * salary;
}
public double earnings() { return salary + overtimePay + meritPay; } //override the method to return salary
public String toString() { //override the method to print the name
return "Senior Worker: " + getName();
}
}
【问题讨论】:
-
@HovercraftFullOfEels 是的,我不能使用接口,因为这些会在我们本书的后面章节中出现。本章只处理多态性和继承。
-
你可以让SeniorWorker继承自RegularWorker,并争辩说RegularWorker继承自Employee,SeniorWorker也继承Employee。或者您可以直接从 Employee 继承并将所需的其余代码添加到 SeniorWorker。
-
这不是指定问题的重复项
-
@BrianS -- 我已经编辑了你的问题,这将把它放在重新打开队列中。希望阅读它的版主同意这不是重复的并重新打开它。同时,希望我的回答对您有所帮助。
标签: java inheritance polymorphism