免費開始練習
司法三等申論題 108年 [檢察事務官電子資訊組] 程式語言

第 一 題

📖 題組:
請問下列 Java 程式碼: 1 class NumAdd { 2 public int add(int x, int y) { 3 return(x + y); 4 } 6 public int add(int x, int y, int z) { 7 return(x + y + z); 8 } 10 public int add(double x, int y) { 11 return((int) x + y); 12 } 14 public int add(int x, double y) { 15 return(x + (int)y); 16 } 17 } 18 19 public class Main { 20 public static void main(String[] args) { 21 NumAdd na = new NumAdd(); 22 System.out.println(na.add(1, 2)); 23 System.out.println(na.add(3, 4, 5)); 24 System.out.println(na.add(6.7, 8)); 25 System.out.println(na.add(9, 10.1)); 26 } 27 28 public Main() { 29 super(); 30 } 31 }
📝 此題為申論題,共 2 小題

小題 (一)

其執行後的輸出為何?(7 分)

思路引導 VIP

看到這題應立刻聯想到「方法多載 (Method Overloading)」,需根據呼叫時傳入引數的「數量」與「資料型別」來對應正確的方法簽名。接著需特別注意浮點數向下強制轉型 (Type Casting) 為整數時的語義(無條件捨去小數),即可準確算出結果。

🤖
AI 詳解
AI 專屬家教

【解題關鍵】方法多載 (Method Overloading) 的特徵解析與強制型別轉換 (Type Casting) 的截斷行為(無條件捨去)。 【答案】 執行後的輸出為:

小題 (二)

請註明程式碼行號,那些程式段落使用到多載(Overloading)、覆寫(Overriding)與多型(Polymorphism)功能?(18 分)

思路引導 VIP

看到此題,應立即將物件導向的三大名詞與給定程式碼進行『特徵比對』。先尋找同名但參數不同的函式(多載),再尋找繼承關係中同名且特徵相同的函式(覆寫),最後思考這兩者如何對應到編譯期多型與執行期多型。特別注意,若程式碼中沒有該機制(如覆寫),需明確指出這是考題陷阱,並展現編譯器繫結(Binding)的底層概念。

🤖
AI 詳解
AI 專屬家教

【破題】本題旨在測驗對物件導向程式設計核心語義(多載、覆寫、多型)的辨識能力,以及對編譯期與執行期繫結(Binding)機制的理解。 【論述】 一、多載(Overloading)

升級 VIP 解鎖