【发布时间】:2014-12-07 17:28:51
【问题描述】:
我正在尝试编写一个类(SalaryEmployee) 和子类(ComissionEmployee),但我主要没有得到合适的薪水,而且我无法执行 se1.setSalesAmount(20000)。我哪里做错了?
这是主要内容:
public static void main(String[] args) {
SalaryEmployee se1 = new CommissionEmployee("E3", "John", 10000);
se1.setSalesAmount(20000) // not found
System.out.println(se1.getSalary());
}
具有 id (String)、name(String)、salary(double) 的 SalaryEmployee。它有一个构造函数来初始化实例变量。它有一个返回薪水的getSalary 方法和一个返回实例变量值的toString 方法。
public class SalaryEmployee {
private String id;
private String name;
double salary;
public SalaryEmployee(String id, String name, double salary) {
this.id = id;
this.name = name;
this.salary = salary;
}
public double getSalary() {
return salary;
}
public String toString() {
return "ID=" + id + " Name=" + name + " Salary=" + salary;
}
}
然后在 ComissionEmployee 中,我需要将其编写为 SalaryEmployee 的子类,它具有 id(String)、name(String)、baseSalary(double)、salesAmount(double)。它有一个构造函数来初始化 id、name 和 baseSalary。它具有获取/设置 salesAmount 的方法。它有一个 getSalary 方法,根据 baseSalary + 佣金返回薪水,如下所示:
salesAmount 低于 10,000 - 无佣金, 至少 10,000 但低于 20,000 - baseSalary 的 3%, 至少 20,000 - 5% baseSalary
public class CommissionEmployee extends SalaryEmployee {
private double baseSalary;
private double salesAmount;
public CommissionEmployee(String id, String name, double salary) {
super(id, name, salary);
this.baseSalary = salary;
}
public void setSalesAmount(double amount) {
this.salesAmount = amount;
}
public double getSalesAmount() {
return salesAmount;
}
public double getSalary() {
if (salesAmount <= 10000 || salesAmount < 20000) {
return 1.03 * baseSalary;
} else if (salesAmount > 20000) {
return 1.05 * baseSalary;
} else if (salesAmount < 10000) {
return baseSalary;
}
return baseSalary;
}
}
【问题讨论】:
-
您能告诉我们您的预期结果与获得的结果吗?告诉我们结果错误是一回事,告诉我们结果是什么又是另一回事。
标签: java inheritance