[英]How to extend a class with a different constructor?
我很難將一個人階級擴展到患者班
我有一個帶有構造函數的Person類
public Person(String firstname,String surname) {
fFirstname=firstname;
fSurname=surname;
}
然后我有一個患者班
公共課患者延伸人
我希望有一個像大致相似的病人的構造函數
public Patient(String hospNumber) {
fFirstname = lookup(hospNumber,"firstname");
fSurname = lookup(hospNumber,"surname");
}
但是我得到了Patient構造函數需要的抱怨(String,String)。 我可以看出為什么會這樣,但是看不出如何為病人擴展人員課程。
只需將這兩個方法調用的結果傳遞給super
構造函數:
public Patient(String hospNumber) {
super(lookup(hospNumber,"firstname"), lookup(hospNumber,"surname"));
}
這些方法必須是靜態的,因為this
他們原本被稱為上還沒有被構建但正在調用時。
您可以在Person
類中擁有默認構造函數
public Person() {
}
要么
您需要使用super
方法將構造函數調用Person類作為其2-arg構造函數
public Patient(String hospNumber) {
super(lookup(hospNumber,"firstname"), lookup(hospNumber,"firstname"));
}
將患者構造函數更改為此。
public Patient(String hospNumber) {
super(lookup(hospNumber,"firstname"), lookup(hospNumber,"surname"));
}
但是lookup
方法需要是靜態的才能執行此操作。 否則你將不得不改為:
public Patient(String hospNumber, String firstname, String surname) {
super(firstname,surname);
}
或類似的東西。
最后,您還可以向Person類添加另一個構造函數。 比如Person()
並稍后設置其余的細節。 這樣你甚至不必在患者的構造函數上寫super()。
附注:只要不具有相同的參數,類就可以有多個構造函數。
super()
調用超類的構造函數(該類繼承的類)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.