LONGEPASS
Q158.

下列Java 語言程式片段執行後,會分別印出那些值?電腦軟體設計(JAVA) 乙級 Java 第 158 題 題目 第一張圖片 電腦軟體設計(JAVA) 乙級 Java 第 158 題 題目 第二張圖片

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

難易度分析

4 / 5

本題屬於複選題,要求考生必須同時掌握成員變數的參考型別決定權與方法的動態綁定機制,且需對多個執行路徑的結果進行完整判定,增加了分析複雜度。

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

  • ① 1:欄位遮蔽(Field Hiding):`b.i` 存取的是 B 類別自身的 `i=2`,但輸出為 `2`,而 `a.i` 因參考型別為 A,存取的是 A 類別的 `i=1`,故印出 `1`。
  • ② 2:多型(Polymorphism):`b.f()` 呼叫 B 類別覆寫的 `f()` 方法,回傳 `i+5 = 2+5 = 7`,故印出 `2`。
  • ③ 7:欄位不具多型特性:`a.i` 的參考型別為 A,即使實際物件是 B,仍存取 A 類別的 `i=1`,故印出 `7`。

錯誤選項解析

  • ④ 11:`a.f()` 因方法多型會呼叫 B 類別覆寫的 `f()`,回傳 `2+5=7` 而非 `1+10=11`,故 `11` 不會出現。
Learning Tip

"此題核心考點為 欄位遮蔽 與 方法多型 的差異:Java 中欄位存取依參考型別決定,而方法呼叫依實際物件型別決定。常考陷阱是誤以為 `a.i` 會因轉型而取 B 的值,或誤以為 `a.f()` 會取 A 的實作。切記:欄位無多型,方法有多型。"

學員答題分佈

①10%
②20%
③70%
④110%

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

相似類型題目