子類實例化時,父類建構子必先執行,確保父類狀態就緒。這是由編譯器自動插入 super() 或開發者顯式指定 super(參數) 實現的。
class A { A() { System.out.println("A建構子"); } }
class B extends A { B() { System.out.println("B建構子"); } }
class C extends B { C() { System.out.println("C建構子"); } }
public class ConstructorChain {
public static void main(String[] args) { new C(); }
}
A建構子
B建構子
C建構子
this() 或 super(..),編譯器自動插入 super() (呼叫父類無參建構子)。this() 二擇一。super(參數),否則編譯失敗。this(參數) 串聯本類其他建構子,最終必有一條路徑到達 super(..)。