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

Java 子類構造器隱式調用父類無參構造,可省略 super()

     編輯:程式設計綜合問答

直接回答

是的,子類構造器首行若不顯式調用 super(...) 或 this(...),編譯器會自動插入 super() 調用父類無參構造器。

代碼對比

// 寫法 1:省略 super()
class Child extends Parent {
    Child() {
        // 編譯器自動插入 super();
    }
}

// 寫法 2:顯式調用(效果相同)
class Child extends Parent {
    Child() {
        super(); // 可寫可不寫
    }
}

必須顯式調用 super(參數) 的場景

  • 父類沒有無參構造器(只定義了帶參構造器,編譯器不再生成默認無參構造器)。
  • 需要調用父類特定帶參構造器完成初始化。
class Parent {
    Parent(String msg) { ... } // 唯一構造器
}
class Child extends Parent {
    Child() {
        super("init"); // 必須顯式調用,否則編譯錯誤
    }
}

記住三條鐵律

  1. 子類構造器第一條語句只能是 super(...) 或 this(...)。
  2. 2. 若無顯式調用,默認 super()。 3. 父類無無參構造器時,子類必須顯式調用帶參 super。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved