你只寫一個構造函數,能夠將name
和extensionNumber
值提供給超類的構造函數,並執行其他任何你喜歡的操作。
我會親自做Employee
構造protected
爲好,因爲它確實是僅提供給子類。請注意,除了這方面之外,在抽象類和具體類中使用構造函數確實沒有區別。
public abstract class Employee {
// ...
protected Employee(String name, String extensionNumber) {
// ...
}
}
public class SalariedEmployee extends Employee {
// ... (probably a field for the salary)
public SalariedEmployee(String name, String extensionNumber, BigDecimal salary) {
// Pass information to the superclass constructor to use as normal
super(name, extensionNumber);
// Use salary here
}
}
請注意,這不是要求你有相匹配的超類的參數,參數,只要你能在super
電話爲他們提供。例如:
public class SalariedEmployee extends Employee {
...
public SalariedEmployee(Employee plainEmployee, BigDecimal salary) {
super(plainEmployee.getName(), plainEmployee.getExtensionNumber());
// Use salary here
}
}
(您可能還需要考慮把extensionNumber
的int
,而不是String
,因爲它確實很可能是一個普通的數字 - 而完整的電話號碼最好作爲字符串存儲)。
謝謝。之後我回答了邏輯。 –