LONGEPASS
Q74.

以下Java 程式執行完後,輸出結果為何?電腦軟體設計(JAVA) 乙級 Java 第 74 題 題目 圖片

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

難易度分析

3 / 5

本題結合了 Java 物件導向的語法特性與邏輯運算,要求考生同時判別抽象類別的實作規範以及具體方法內部的條件判斷邏輯,且選項中設置了關於類別定義與實體化的概念陷阱,增加了判斷複雜度。

正確答案:④0

④ 0:compareTo 方法判斷 `s.perimeter() > this.perimeter()`,r1 周長 12 不大於 r2 周長 16,條件不成立故回傳 0,輸出結果為 0。

錯誤選項解析

  • ① 無法編譯,因為Shapes 類別不能implements Compareable:抽象類別可以實作介面,Java 允許 abstract class 使用 implements 關鍵字實作介面,此為合法語法。
  • ② 1:compareTo 方法的邏輯為:當傳入物件的 perimeter 大於 this 的 perimeter 時回傳 1,否則回傳 0。r2 的周長為 (5+3)*2=16,r1 的周長為 (3+3)*2=12,12 不大於 16,故回傳 0 而非 1。
  • ③ 無法編譯,因為Shapes 類別設定為abstract 而無法產生Rectangle 物件:抽象類別本身不能直接實體化,但可以透過其非抽象子類別(如 Rectangle)來建立物件。程式碼中 `new Rectangle(3,3)` 是合法的,因為 Rectangle 是具體類別。
Learning Tip

"本題考點為 抽象類別與介面的關係 及 compareTo 比較邏輯。常見陷阱:(1) 誤以為抽象類別不能實作介面;(2) 誤以為抽象類別的子類別不能實體化;(3) 混淆 compareTo 的比較方向,需仔細確認是 `s > this` 還是 `this > s`。實務上 Java 標準庫的 Comparable 介面 規範 compareTo 應回傳正數、零或負數,但此題為自訂介面,僅回傳 0 或 1。"

學員答題分佈

①無法編譯,因為Shapes 類別不能implements Compareable0%
②10%
③無法編譯,因為Shapes 類別設定為abstract 而無法產生Rectangle 物件0%
④00%

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

相似類型題目