免費開始練習
司法三等申論題 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 小題

小題 (二)

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

思路引導 VIP

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

🤖
AI 詳解
AI 專屬家教

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

小題 (一)

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

思路引導 VIP

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

🤖
AI 詳解
AI 專屬家教

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

🏷️ 相關主題

物件導向程式設計
查看更多「[檢察事務官電子資訊組] 程式語言」的主題分類考古題