簡體   English   中英

如何使用不同的構造函數擴展類?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM