Q64.
以下Java 程式執行後,何者輸出正確?
電腦軟體設計(JAVA) · 乙級 · Java · Q64
難易度分析
2 / 5
本題考查 Java 的多型機制與執行期動態綁定。需分析物件在宣告型別與實際實體型別不同時,方法呼叫的優先順序,屬於基本程式邏輯推演。
正確答案:①AB
① AB:程式建立 Object[] 陣列,依序放入 `new A()` 與 `new B()`。呼叫 `print(o[0])` 時會觸發 A 類別的 toString() 回傳 "A",接著 `print(o[1])` 觸發 B 類別的 toString() 回傳 "B",故輸出為 AB。
錯誤選項解析
- ② BA:輸出 "BA" 表示順序顛倒,但程式中陣列索引 0 存放的是 A 物件、索引 1 存放的是 B 物件,執行順序並非相反。
- ③ AA:輸出 "AA" 表示兩個物件皆回傳 "A",但 `o[1]` 實際上是 B 類別的實體,其 toString() 回傳的是 "B" 而非 "A"。
- ④ BB:輸出 "BB" 表示兩個物件皆回傳 "B",但 `o[0]` 實際上是 A 類別的實體,其 toString() 回傳的是 "A" 而非 "B"。
Learning Tip
"此題考 Java 多型與 toString() 方法的呼叫機制。當物件被放入 Object 型別陣列時,執行期仍會根據實際物件型別(runtime type)動態綁定呼叫對應的 toString()。常考陷阱為混淆宣告型別與實際型別,需記住 Java 採用動態分派(dynamic dispatch)機制。"
學員答題分佈
①AB0%
②BA0%
③AA0%
④BB0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!