我想寫一個類(SalaryEmployee)和子類(ComissionEmployee),但我沒有得到正確的薪水在主,我不能做一個se1.setSalesAmount(20000)。我哪裏做錯了?繼承Java子類
這就是在主:
public static void main(String[] args) {
SalaryEmployee se1 = new CommissionEmployee("E3", "John", 10000);
se1.setSalesAmount(20000) // not found
System.out.println(se1.getSalary());
}
SalaryEmployee具有ID(字符串),姓名(字符串),(雙薪)。它有一個構造函數來初始化實例變量。它有一個返回工資的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(字符串),姓名(字符串),baseSalary(雙),SalesAmount兩個(雙)。它只有一個構造函數來初始化id,name和baseSalary。它具有salesAmount的get/set方法。它具有的getSalary方法如下返回基於baseSalary +提成工資:
SalesAmount兩個低於10,000 - 無佣金, 至少10,000,但低於20,000 - 3%baseSalary的, 至少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;
}
}
您能否給我們您的預期結果VS結果?告訴我們結果是錯誤的是一件事,告訴我們結果是另一回事。 – Juxhin 2014-12-07 17:31:08