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

第 二 題

📖 題組:
一、請根據圖 1-1 之 Java 程式碼回答問題。 interface PaymentMethod { boolean pay(int amount); } class Card implements PaymentMethod { private int limit = 1000; public boolean pay(int amount) { if(amount > limit) return false; limit -= amount; return true; } } class Cash implements PaymentMethod { public boolean pay(int amount) { return true; } } class Order { private int total; public Order(int total) { this.total = total; } public boolean checkout(PaymentMethod method) { return method.pay(total); } } 圖 1-1
📝 此題為申論題,共 3 小題

小題 (二)

(二)假設在某類別的 main()方法中依序執行圖 1-2 之程式碼,請寫出其執行結果。(5 分)

PaymentMethod card = new Card();
PaymentMethod cash = new Cash();
Order order = new Order(600);

System.out.println(order.checkout(card));
System.out.println(order.checkout(cash));
System.out.println(order.checkout(card));
圖 1-2

思路引導 VIP

📋 事實梳理:新建了 limit = 1000 的 Card 物件,與 Cash 物件,及 total = 600 的 Order。 🔍 爭點辨識:歷次呼叫 checkout() 時,物件內部狀態(如 limit)的變化。

🤖
AI 詳解
AI 專屬家教

【爭點分析】 本題測驗物件狀態(State)之保存與方法呼叫間之相互影響,尤其著重於動態執行時期變數之更迭。 【小前提:本案事實涵攝與推導】

小題 (一)

(一)在 Order 類別中,checkout()方法的參數型別宣告為 PaymentMethod 介面。
1. 請說明為何這樣的設計能讓該方法同時接收 Card 與 Cash 的物件作為參數?(5 分)
2. 此設計運用了物件導向程式設計的什麼特性?(5 分)

思路引導 VIP

📋 事實梳理:題目中有 PaymentMethod 介面,且 CardCash 皆實作了此介面。checkout 方法接受 PaymentMethod 作為參數。 🔍 爭點辨識:為何傳入子類別的實例,父類型別可以接收?這涉及到物件導向中的哪個核心特徵?

🤖
AI 詳解
AI 專屬家教

【爭點分析】 本題主要測驗 Java 介面(Interface)之實作機制與物件導向語言核心之「多型(Polymorphism)」特性,探討父類型別變數如何引用子類型別物件。 【大前提:法規與實務見解】

小題 (三)

(三)此系統欲擴充退款功能,但並非所有付款方式都支援退款,因此新定義了一個 Refundable 介面:

interface Refundable {
boolean refund(int amount);
}

請在不更動既有類別架構的前提下,完成下列 tryRefund()方法,實作邏輯如下。(10 分)
 若傳入的 method 物件,其執行時期的類別亦實作 Refundable 介面,則呼叫其 refund(amount)方法。
 若傳入的 method 物件未實作 Refundable 介面(即不支援退款),則回傳 false。

boolean tryRefund(PaymentMethod method, int amount) {
// 請在此處填入您的實作程式碼
}

思路引導 VIP

📋 事實梳理:要在不知道傳入物件到底是什麼類別的情況下,判斷它是否實作了 Refundable。 🔍 爭點辨識:如何於執行時期判斷物件型別(RTTI)?判斷後如何呼叫該介面的專屬方法?

🤖
AI 詳解
AI 專屬家教

【爭點分析】 本題爭點在於 Java 執行時期型別辨識(Run-Time Type Identification, RTTI)與「向下轉型(Downcasting)」之實作。 【大前提:法規與實務見解】

🏷️ 相關主題

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