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

Java 繼承與構造器調用順序考題解析:父類構造器、字段初始化、子類構造器執行流程

     編輯:程式設計疑難解答

Java 繼承與構造器調用順序考題解析:父類構造器、字段初始化、子類構造器執行流程

典型考題:父類 Parent(String pName) 設置 name="kitty",子類 Test(String Name) 調用 super("kitty") 並設置 name="hello"。問輸出順序。

執行流程圖解

  1. 子類構造器隱式調用 super()(或顯式 super("kitty"))。
  2. 父類字段初始化:name = "kitty"(若有字段初始化語句)。
  3. 父類構造器體執行:打印或邏輯代碼。
  4. 子類字段初始化:name = "hello"(覆蓋父類同名字段)。
  5. 子類構造器體執行。

關鍵點

  • 父類構造器**必須**先於子類構造器完成。
  • 字段初始化順序:父類字段 → 父類構造器體 → 子類字段 → 子類構造器體。
  • 若父類無無參構造器,子類**必須**顯式 super(...) 傳參。

代碼驗證模板

class Parent {
    String name = "default";
    Parent(String pName) {
        this.name = pName;
        System.out.println("Parent: " + name);
    }
}
class Child extends Parent {
    String name = "child-default";
    Child(String n) {
        super("kitty");
        this.name = n;
        System.out.println("Child: " + name);
    }
}
public class Main {
    public static void main(String[] args) {
        new Child("hello");
    }
}
// 輸出:
// Parent: kitty
// Child: hello

理解此順序,即可準確預測任何繼承鏈下的構造輸出。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved