Q63.
以下Java 程式執行後,何者輸出正確?
電腦軟體設計(JAVA) · 乙級 · Java · Q63
難易度分析
2 / 5
本題考查對物件導向中繼承與實作機制之理解,要求考生能準確判斷物件與多個型別(類別及介面)之間的關係,並分析對應的程式執行邏輯。
正確答案:④b is an instance of A,b is an instance of C,
④ b is an instance of A,b is an instance of C,:class B 同時 extends C 與 implements A,因此物件 b 對於 instanceof A 與 instanceof C 皆回傳 true,兩段 print 皆會執行,輸出為「b is an instance of A,b is an instance of C,」。
錯誤選項解析
- ① 沒有任何輸出:程式會產生輸出,因為 instanceof 運算子會檢查物件是否為指定型別的實例,兩個條件皆成立,故會執行兩次 System.out.print。
- ② b is an instance of A,:此選項僅輸出第一行結果,但忽略了 class B extends C,因此 b instanceof C 同樣為 true,也會輸出第二行訊息。
- ③ b is an instance of C,:此選項僅輸出第二行結果,但忽略了 class B implements A,因此 b instanceof A 同樣為 true,也會輸出第一行訊息。
Learning Tip
"instanceof 運算子會檢查物件的完整繼承體系,包含所有父類別與實作的介面。此題常考陷阱在於誤以為 instanceof 僅檢查直接父類別,實際上只要物件在繼承鏈中符合該型別(含介面),即回傳 true。實務上需注意 extends(單一繼承)與 implements(可多重實作介面)的差異。"
學員答題分佈
①沒有任何輸出0%
②b is an instance of A,0%
③b is an instance of C,0%
④b is an instance of A,b is an instance of C,0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!