LONGEPASS
Q44.

Java 語言何時會自動定義建構子(Constructor)?

電腦軟體設計(JAVA) · 乙級 · Java · Q44

難易度分析

3 / 5

本題考查對 Java 編譯器自動產生建構子之觸發條件的精確掌握程度,選項中包含高度相似的描述,要求考生必須能區分基礎定義與特定條件的細微差異,具有一定的辨析難度。

正確答案:②程式沒有定義任何建構子時

② 程式沒有定義任何建構子時:當類別未定義任何建構子時,Java 編譯器會自動產生一個無參數的預設建構子(Default Constructor),其存取修飾詞與該類別相同,且內部會呼叫父類別的無參數建構子。

錯誤選項解析

  • ① 程式沒有定義預設建構子時:此描述不夠精確。預設建構子的自動產生條件是類別中「完全未定義任何建構子」,而非僅未定義預設建構子。若已定義含參數建構子,即使沒有預設建構子,Java 也不會自動產生。
  • ③ 程式使用沒有參數的建構子時:若程式已明確使用或定義無參數建構子,Java 編譯器即不會自動產生預設建構子。自動定義的觸發條件是「完全沒有任何建構子定義」,而非使用無參數建構子時。
  • ④ 程式的任何類別:Java 並非對所有類別都自動定義建構子。只要類別中已存在任何建構子(無論有無參數),編譯器就不會再自動產生。只有完全未定義建構子的類別才會獲得預設建構子。
Learning Tip

"預設建構子的自動產生是 Java 檢定常考陷阱。關鍵在於「任何建構子」的定義:一旦手動定義了含參數建構子,預設建構子即消失,此時若仍需無參數建構子,必須明確手動撰寫。實務上建議始終明確宣告所需建構子,避免依賴編譯器自動產生,以確保程式碼可讀性與維護性。"

學員答題分佈

①程式沒有定義預設建構子時0%
②程式沒有定義任何建構子時0%
③程式使用沒有參數的建構子時0%
④程式的任何類別0%

此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!

相似類型題目