天天看點

堆棧花園的Java學習備忘錄——super關鍵字super的文法

  • super可以和this對比學習
  • super的文法

  1. super可以出現在執行個體方法和構造方法中,super不能出現在靜态方法中。
  2. super的文法:“super.” 和 “super()”
  3. super. 大部分情況下可以省略
  4. super() 隻能出現在構造方法的第一行,通過目前的構造方法去調用父類中的構造方法(根據傳參決定調用父類中哪個構造方法)。
  • 這樣做的目的是建立子類對象的時候,先初始化父類型的特征。
  1. 如果一個構造方法第一行既沒有this()又沒有super()的話,預設會有一個super()。這樣的文法機制保證了通過目前子類的構造方法一定會調用父類的無參構造方法,是以必須保證父類的無參構造方法必須存在,否則會報錯。
  • 例如
class Father{
    String fatherFristName;

    public Father(String fatherFristName) {
        this.fatherFristName = fatherFristName;
    }
}

class Child extends Father{
    public Child(){
        /*這裡預設會有一個super();
        但是由于父類中沒有無參的構造方法,
        是以這裡編譯器會報錯。
        */
    }
}
           

6.什麼時候"super." 不能省略?

如果父類中有某個屬性或方法,子類中也有相同的屬性或方法,但是想在子類中通路“父類的特征”,“super.” 不能省略,否則會自動加上"this."。

  • 注意:

super不是引用,super也不儲存記憶體位址,super不指向任何對象,super隻是代表目前對象的父類型的特征。