民國105年 第2梯次 電腦軟體設計(JAVA)乙級 學科
第32題
以下J a v a 程式執行完後,輸出結果為何?
題目
以下J a v a 程式執行完後,輸出結果為何?
- (1) 無法編譯,因為I n s t r u m e n t 類別的p l a y ( ) 方法沒有設定為a b s t r a c t
- (2) B r a s s P l a y
- (3) 無法編譯,因為I n s t r u m e n t 物件不是B r a s s 類別
- (4) 無法編譯,因為I n s t r u m e n t 類別設定為a b s t r a c t
官方答案
(1) 無法編譯,因為I n s t r u m e n t 類別的p l a y ( ) 方法沒有設定為a b s t r a c t
解析
在 Java 中,只要方法沒有實作本體(只寫 void play(); 而沒有大括號),就必須加上 abstract 修飾,而且該方法必須位於抽象類別內。題目中 Instrument 雖宣告為 abstract,但 play() 少了 abstract,編譯器會判定為「缺少方法主體」而無法編譯。抽象類別本身是完全合法的語法,只是不能直接以 new 建立物件;因此把錯誤歸因於「類別被設定為 abstract」並不正確,真正的原因在於方法修飾子不完整。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。