免費開始練習
普考申論題 112年 [資訊處理] 程式設計概要

第 一 題

📖 題組:
四、請依據以下Java程式碼回答下列問題: 01 import java.util.Scanner; 02 public class MyJavaCode { 03 public static void main(String[] args) { 04 Scanner in = new Scanner(System.in); 05 int a = in.nextInt(); 06 Animal dog = new Dog(); 07 dog.run(a); 08 dog.run(); 09 } 10 } 11 12 class Dog extends Animal { 13 public void run(int units){ 14 System.out.println("Dog's running speed is " + units); 15 } 16 public void run(){ 17 System.out.println("Dog's default running speed is 20"); 18 } 19 }
📝 此題為申論題,共 3 小題

小題 (一)

請說明Java中class、abstract class與interface之間的主要差異?(10分)

思路引導 VIP

比較物件導向程式設計的三個基礎結構。可從以下面向切入:1. 實體化(是否能用new建立物件)。2. 方法實作(是否允許有實作區塊,包含Java 8的default方法)。3. 繼承關係(單一繼承 extends vs 多重實作 implements)。4. 屬性變數(成員變數的限制,如interface只能是 public static final)。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題考查Java物件導向程式設計(OOP)中核心類別結構的特性比較,評量考生對於類別與介面在設計藍圖上不同定位的理解。 【理論/法規依據】

小題 (二)

請說明上述程式碼那幾行會產生編譯錯誤,以及錯誤的原因。(5分)

思路引導 VIP

審視程式碼,發現程式中直接使用了 Animal 這個名稱(第6行宣告變數型別,第12行作為父類別),但整段程式碼中完全沒有定義 class Animalinterface Animal。這會觸發「找不到符號 (Cannot find symbol)」的編譯錯誤。此外,因為變數 dog 型態為 Animal,若假設有空的 Animal 存在,第7, 8行呼叫 run() 時也會因 Animal 無此方法而報錯(多型呼叫限制)。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題考查編譯時期錯誤的識別能力,包含「未宣告的類別名稱(找不到符號)」與物件導向中的「參考型別與多型方法呼叫限制」。 【理論/法規依據】

小題 (三)

不改變原1-19行程式碼順序的條件下,請修正問題(二)之編譯問題,使之可以正常執行。修正不包含左右大括號「{}」,新增或修改之指令行數不可以超過3行。(10分)

思路引導 VIP

問題的根源在於「依賴了不存在的 Animal 類別」。因為題目限制只能修改不超過3行,要在3行內把 Animal 類別無中生有並補齊兩個 run 方法有難度且易犯錯。最乾淨俐落的解法是「拔除依賴」。把第6行宣告型別改回 Dog,把第12行的 extends Animal 刪除,這樣修改剛好2行,且完全消除了所有編譯錯誤。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題為程式除錯與重構題,考驗考生在嚴格行數限制下,採用「最小修改/解耦」策略消除程式編譯錯誤的實作能力。 【理論/法規依據】

🏷️ 相關主題

程式語言與程式設計基礎
查看更多「[資訊處理] 程式設計概要」的主題分類考古題