Q70.
以下Java 程式執行完後,輸出結果為何?
電腦軟體設計(JAVA) · 乙級 · Java · Q70
難易度分析
3 / 5
本題要求考生對 Java 類別定義的語法規範有精確掌握,需能區分抽象類別的實體化限制與方法宣告規則之間的差異,並能從多個編譯錯誤可能的選項中辨識出正確的語法失效原因。
正確答案:④無法編譯,因為Instrument 類別的play()方法沒有設定為abstract
④ 無法編譯,因為Instrument 類別的play()方法沒有設定為abstract:當 抽象類別中包含沒有方法本體的方法宣告時,該方法必須以 abstract 關鍵字修飾,否則編譯器會因語法錯誤而無法通過編譯。
錯誤選項解析
- ① 無法編譯,因為Instrument物件不是Brass 類別:多型機制允許父類別型態的參考變數指向子類別物件,因此 Instrument 參考變數指向 Brass 物件是合法的向上轉型,並非無法編譯的原因。
- ② BrassPlay:此選項假設程式可正常執行並輸出 BrassPlay,但實際上程式存在編譯錯誤,根本無法執行到輸出階段。
- ③ 無法編譯,因為Instrument 類別設定為abstract:抽象類別本身可以被宣告為參考變數的型態,這符合 Java 的多型原則,抽象類別不能直接 new 實體但可作為型態宣告使用。
Learning Tip
"本題核心考點為 抽象類別與抽象方法的宣告規則。在 Java 中,抽象類別可包含具體方法(有實作)與抽象方法(無實作),但任何只有宣告沒有實作的方法都必須加上 `abstract` 修飾。常見陷阱是混淆「抽象類別不能實體化」與「抽象方法必須標示 abstract」這兩個獨立規則,實務上應注意抽象方法用於強制子類別覆寫的設計目的。"
學員答題分佈
①無法編譯,因為Instrument物件不是Brass 類別0%
②BrassPlay0%
③無法編譯,因為Instrument 類別設定為abstract0%
④無法編譯,因為Instrument 類別的play()方法沒有設定為abstract0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!