首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 父子類建構子調用鏈:super() 隱式與顯式規則

     編輯:Java 相關知識

子類實例化時,父類建構子必先執行,確保父類狀態就緒。這是由編譯器自動插入 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建構子

三大鐵律

  1. 隱式 super():子類建構子首行若無顯式 this() 或 super(..),編譯器自動插入 super() (呼叫父類無參建構子)。
  2. 顯式 super(..):需放在首行,可呼叫父類任意建構子,與 this() 二擇一。
  3. 父類無無參建構子:子類必須顯式 super(參數),否則編譯失敗。

進階場景

  • 多載建構子鏈:this(參數) 串聯本類其他建構子,最終必有一條路徑到達 super(..)。
  • 拋出異常:父建構子拋異常 → 子建構子必須捕獲或繼續拋出。
  • 欄位初始化順序:父類靜態 → 子類靜態 → 父類實例欄位/塊 → 父建構子 → 子類實例欄位/塊 → 子建構子。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved