在HourlyEmployee和SalariedEmployee子類中,我們調用super()
將「name」傳遞給基類構造函數。我有兩個問題:繼承和私有變量
變量名稱來自哪裏,這是aName變量的拼寫錯誤嗎?
調用
setSalary()
如何在這些子類中工作?
是否延長Employee類爲我們提供了setSalary()
方法的副本,但隨後的方法中有aSalary=salary;
,其中工資是不能繼承的,因爲它是私人或不繼承乾脆讓我們用setSalary()
方法從基這就是爲什麼使用super()
來傳遞名稱的原因。
public class Employee {
private String name;
private double salary;
public Employee(String aName) {
name = aName;
}
public void setSalary(double aSalary) {
salary = aSalary;
}
public String getName() {
return name;
}
public double getSalary() {
return salary;
}
public double getWeeklySalary() {
return salary/52;
}
}
public class HourlyEmployee extends Employee {
public HourlyEmployee(String aName, double anHourlySalary) {
super(name);
setSalary(anHourlySalary*40*52);
}
}
public class SalariedEmployee extends Employee {
public SalariedEmployee(String aName, double anAnnualSalary) {
super(name);
setSalary(anAnnualSalary);
}
}
你沒有通過任何超級(名稱)。你應該通過超級(aName)。 – solvator