簡體   English   中英

super()的正確語法?

[英]Proper syntax for super()?

當我使用super()使用超類方法時,正確的返回方法是什么?

假設我有一小時的課。 它包含一個也稱為Hourly的構造函數,其參數為“字符串名稱”和“雙倍速率”。UML版本如下所示:

+小時(名稱:字符串,速率:雙精度)

但是,“名稱”變量是Employee類的私有屬性,每小時與該類通過繼承相關聯。 我的意思是說,UML從Hourly類指向Employee類顯示一條清晰的箭頭(不是菱形)。

我將如何編寫構造函數Hourly?

我有以下基本知識:

public Hourly(String name, double rate){


}

請幫我填寫。

單獨說,方法有一個返回。 假設我想退還double rate 返回使用Super()的某些語法的正確語法是什么,我知道我不能簡單地使用:

return this.rate;

您的Employee肯定有一個名字。

private String name;

public Employee(String name) {
    this.name = name;
}

之后,您的Hourly還必須有一個名稱。 由於“ Hourly是“ Employee ,因此您還必須在其上設置名稱。 這樣就完成了。

public Hourly(String name, double rate) {
    super(name);
    this.rate = rate;
}

根據您的評論,名稱由超類存儲; 率不是。 因此,應在將名稱傳遞給超級構造函數的同時,將速率存儲在要定義的Hourly類中,如下所示:

public class Hourly {

  private double rate;

  public Hourly(String name, double rate) {
    super(name);
    this.rate = rate;
  }

  public double getRate() {
    return rate;
  }
}

如果Hourly是Employee的子類,並且您想將名稱解析為超類(Employee),則在Hourly構造函數中調用super(name);

public Hourly(String name, double rate){
    super(name);
}

由於Hourly extends Employee

    class Hourly extends Employee {

    private int rate;

    public Hourly(String name, int rate) {
      super(name);  //assuming Employee has this constructor
      this.rate = rate;
    }

    //this make sense if name is protected and doesn't have getter in base class
    //ideally you would have this in base class itself
    public String getName() {
       return super.name; //for rate there is no sense in using super as it is not known to super class
    }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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