[英]Java constructor - optional argument in a subclass constructor
這里的整個系統是一種圖書館。 我有一個名為Person
的超類,有兩個構造函數:一個接受名字和姓氏作為單獨的字符串,另一個接受這些參數以及中間名的 ArrayList - 這個想法是有些人沒有中間名。 在一個名為Member
的子類中,我希望通過傳遞一個空的 ArrayList 來選擇創建一個有或沒有中間名的成員 object。 我的第一個想法是這樣的:
if (middleNames.size() == 0) {
super(firstName, lastName);
} else {
super(firstName, middleNames, lastName);
}
但是我現在意識到super()
構造函數必須是子類構造函數中的第一個語句。 希望您能看到我在這里嘗試做的事情 - 有沒有一種好方法可以做到這一點,而無需在成員 class 中編寫兩個構造函數? 有幾行代碼我不想重復。
您可以通過 static 工廠方法而不是構造函數來構造Member
實例。
class Member extends Person {
static Member create(String firstName, List<String> middleNames, String lastName) {
if (middleNames.isEmpty()) {
return new Member(firstName, lastName);
}
return new Member(firstName, middleNames, lastName);
}
private Member(String firstName, String lastName) {
super(firstName, lastName);
}
private Member(String firstName, List<String> middleNames, String lastName) {
super(firstName, middleNames, lastName);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.