再談 super 關(guān)鍵字

1. 寫在前面

平時只是隨便用用,沒有整體的總結(jié)過super這個關(guān)鍵字。
因此,今天這里我們系統(tǒng)的去看一下 super 關(guān)鍵字的特性和用法。


2. 理論知識

2.1 前置

在了解 super 關(guān)鍵字之前,我們需要了解一個前置信息:

每當(dāng)創(chuàng)建子類的實例時,不會創(chuàng)建父類對象,但是會調(diào)用父類構(gòu)造方法。并且,這個父類的構(gòu)造方法會在子類構(gòu)造方法第一行(即先于子類構(gòu)造方法執(zhí)行)。

那么為什么執(zhí)行子類構(gòu)造方法之前,需要執(zhí)行父類的構(gòu)造方法呢?因為子類需要
從父類繼承 屬性 & 方法。

要繼承就要先有啊,這就要求父類構(gòu)造器先執(zhí)行,初始化相關(guān)的對象和方法。

2.2 用法

super 關(guān)鍵字的用法包括如下幾種:

  • super 引用直接父類對象
  • super() 調(diào)用直接父類構(gòu)造函數(shù)

3. code

3.1 super引用直接父類對象

這里通過 super 關(guān)鍵字直接引用父類對象【引用了對象自然就可以使用父類對象的屬性&方法】

  • 通過父類對象引用父類成員
public class Animal{
      private String name="animal";
}

public class Dog extends Animal{
      private String name = "dog";

      public void printName(){
          sout(name);
          sout(super.name);    // 這里打印 直接父類 的name屬性 "animal"
      }
}
  • 通過父類對象引用父類方法
public class Animal{
      public void bark(){
            sout("animal is barking.");
      }
}

public class Dog{
      public void bark(){
          super.bark();    // 這里調(diào)用父類的 bark() 方法。
          sout("dog id barking....");
      }
}

3.2 super() 調(diào)用父類構(gòu)造函數(shù)

直接看代碼吧

public class Animal{
      Animal(){
          sout("Animal is created.");
      }
}

public class Dog{
      Dog(){
          super();
          sout("dog is created.");
      }
}

// main 方法調(diào)用
main(){
      Dog dog = new Dog();
}

這里輸出如下:

Animal is created.
dog is created.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容