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

第 二 題

以下 Java 程式碼計算人類(Human)進行不同運動(Exercise)消耗的卡路里量。請完成統一塑模語言 UML 圖;並說明程式執行後的輸出,以及動態多型(Dynamic Polymorphism)指令所在之程式碼行數與其構成之原因。(25 分)
(程式碼包含 Exercise 抽象類別,Running 與 Climbing 子類別,以及 Human 與 ExerciseTest 類別,詳見原圖)
📝 此題為申論題

思路引導 VIP

首先釐清各類別間的關係(繼承、相依)以建構 UML 類別圖;接著追蹤主程式建立的實體與傳遞的參數來計算執行輸出;最後聚焦於父類別參考變數指向子類別實體並呼叫覆寫方法的那一行,以虛擬方法表(V-Table)與晚期綁定(Late Binding)原理解釋動態多型。

🤖
AI 詳解 AI 專屬家教

【破題】本題測驗物件導向程式設計的核心概念:繼承架構建模(UML)、方法覆寫的實務應用,以及執行期動態綁定(Dynamic Binding)的底層機制。 【論述】 一、UML 類別圖模型建立

▼ 還有更多解析內容
📝 動態多型與 UML
💡 利用繼承、覆寫與向上轉型,落實程式執行期的動態綁定機制。

🔗 動態多型(Dynamic Dispatch)執行鏈

  1. 1 編譯期檢查 — 確認父類別參考變數之型別具備該方法定義。
  2. 2 向上轉型 — 程式運行時,父類別參考變數實際指向子類別實體。
  3. 3 執行期綁定 — JVM 查 V-Table 並呼叫實體類別覆寫後的方法。
🔄 延伸學習:延伸思考:此機制如何支持「開閉原則」,使新增運動項目不需修改 Human 類別。
🧠 記憶技巧:多型三要素:一繼承、二覆寫、三向上轉型(父類參考指向子類)。
⚠️ 常見陷阱:答題時容易混淆 Overload(靜態)與 Override(動態),或忽略 UML 箭頭方向應指向父類。
開閉原則 (OCP) 介面與抽象類別之差異

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

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