LONGEPASS
Q168.

關於Java 類別中的建構子(Constructor),以下那些敘述是正確的?

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

難易度分析

4 / 5

本題屬於複選題型,要求考生同時掌握預設建構子的觸發條件、權限繼承及父類別初始化機制。選項中設置了高度相似的描述以誘導誤判,必須對編譯器的自動生成邏輯有精確的區分能力才能正確作答。

正確答案 (複選):①, ②, ③

  • ① 只有當類別中沒有定義任何建構子的情況下,編譯器才會建立預設建構子:預設建構子的產生條件是類別中完全未定義任何建構子。一旦程式設計師手動定義了任意建構子(無論有無參數),編譯器便不會自動產生預設建構子,這是 Java 語言規範的明確設計。
  • ② 預設建構子與其類別具有相同的存取權限:預設建構子的存取修飾詞會自動與所屬類別保持一致。若類別宣告為 public,預設建構子即為 public;若類別為套件層級可見(package-private),預設建構子也同樣為 package-private。
  • ③ 預設建構子可以呼叫其父類別(Super Class)的無參數建構子:預設建構子會在內部隱含呼叫 super(),即父類別的無參數建構子,以確保物件繼承鏈中的初始化流程正確執行,這是 Java 物件初始化的核心機制。

錯誤選項解析

  • ④ 只要某類別缺少無參數建構子,編譯器會建立一個預設建構子:此敘述混淆了預設建構子的產生條件。編譯器僅在「完全未定義任何建構子」時才產生預設建構子,若已定義有參數建構子而缺少無參數建構子,編譯器不會自動補充,此時必須手動加入無參數建構子。
Learning Tip

"此類題型常考陷阱在於混淆「未定義任何建構子」與「缺少無參數建構子」的差異。切記:預設建構子只在完全手動定義建構子時才由編譯器自動產生。實務上建議總是明確撰寫所需建構子,避免依賴編譯器行為,尤其在設計可被繼承的類別時,需特別注意建構子鏈結與父類別初始化的順序。"

學員答題分佈

①只有當類別中沒有定義任何建構子的情況下,編譯器才會建立預設建構子0%
②預設建構子與其類別具有相同的存取權限0%
③預設建構子可以呼叫其父類別(Super Class)的無參數建構子0%
④只要某類別缺少無參數建構子,編譯器會建立一個預設建構子0%

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

相似類型題目