首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Java 繼承關係下構造方法執行順序深度解析:無參 vs 有參構造器

     編輯:程式設計疑難解答

核心結論

子類實例化過程 必然遵循:父類靜態初始化 → 父類實例初始化 → 父類構造器 → 子類靜態初始化 → 子類實例初始化 → 子類構造器 的順序。兩種調用方式差別僅在於「調用哪個父類構造器」。

兩種調用方式對比

場景代碼父類構造器調用
無參構造器new Student()隱式調用 super() (父類無參構造器)
有參構造器new Student("二哈", 10)顯式調用 super(name, age) (父類有參構造器)

詳細執行流程追蹤 (以有參為例)

  1. Person 靜態代碼塊/靜態變量 (若有)
  2. Person 實例變量初始化 (如 private String name = "default")
  3. Person(String name, int age) 構造器 執行賦值邏輯
  4. Student 靜態代碼塊/靜態變量 (若有)
  5. Student 實例變量初始化
  6. Student(String name, int age) 構造器 執行 super(name, age) 及自身邏輯

驗證技巧

在每個關鍵位置加入 System.out.println("標識"),觀察控制台輸出順序即可直觀理解。

關鍵規則提醒

  • 子類構造器首行 必須 顯式或隱式調用父類構造器。
  • 父類無無參構造器時,子類 必須 顯式 super(...) 傳參。
  • 靜態初始化僅在類首次載入時執行一次,非每次 new 都執行。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved