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

第 三 題

📖 題組:
試就下列 Java 程式碼,回答三個問題:(30 分) (一)繪出這些程式間的類別繼承關係(class inheritance hierarchy)。 (二)於 StudentDemo 的 main()中加入一小段具多型(polymorphism)特性的程式碼。 (三)修改程式,讓 Student 繼承 Person,其中 Person 擁有 firstName 與 lastName 兩個屬性(亦即 Student 只剩 id 與 tuition 兩個屬性),請完整撰寫 Person 與 Student 兩個類別,且需完成所有相關 constructors 與 methods 的實作。
題組圖片
題組圖片
題組圖片
題組圖片
題組圖片
📝 此題為申論題,共 3 小題

小題 (三)

修改程式,讓 Student 繼承 Person,其中 Person 擁有 firstName 與 lastName 兩個屬性(亦即 Student 只剩 id 與 tuition 兩個屬性),請完整撰寫 Person 與 Student 兩個類別,且需完成所有相關 constructors 與 methods 的實作。

思路引導 VIP

看到這題應先想到物件導向中的「繼承」與「屬性抽取(Refactoring)」。將原本在 Student 的 firstName 與 lastName 抽取至新建的父類別 Person 中,再讓 Student 使用 extends 繼承 Person,並在 Student 的建構子內利用 super() 呼叫父類別的建構子完成初始化。

🤖
AI 詳解
AI 專屬家教

【解題思路】運用物件導向的「繼承 (Inheritance)」特性進行重構,將共通屬性向上抽取至父類別。先定義 Person 類別管理 firstName 與 lastName,接著讓 Student 繼承 Person,並在建構子中透過 super() 正確初始化父類別屬性。 【解答】

小題 (一)

繪出這些程式間的類別繼承關係(class inheritance hierarchy)。

思路引導 VIP

觀察各類別程式碼宣告中的 extends 關鍵字,確認父類別與子類別的對應。找出基底類別(Student)以及繼承它的三個衍生類別,最後以樹狀圖或階層文字清楚呈現出繼承結構。

🤖
AI 詳解
AI 專屬家教

【解題思路】觀察各類別宣告中的 extends 關鍵字以確立父子類別關係(1 句) 【詳解】 已知:

小題 (二)

於 StudentDemo 的 main()中加入一小段具多型(polymorphism)特性的程式碼。

思路引導 VIP

看到這題首先回想「多型(Polymorphism)」的核心定義:使用父類別型態的參考變數,來指向並操作不同子類別的實體(Upcasting)。在此題中,Student 為抽象父類別,最簡單的作法是建立一個 Student 型別的陣列,裡面存放 UndergraduateStudent、GraduateStudent 等子類別物件,並透過迴圈呼叫共同的方法(如 getTuition()),藉此展現執行期的動態綁定(Dynamic Binding)。

🤖
AI 詳解
AI 專屬家教

【破題】多型(Polymorphism)的核心在於「父類別參考變數指向子類別物件」,並在執行期透過動態綁定(Dynamic binding)決定實際存取的內容與方法。 【論述】 一、程式碼實作

📝 Java 繼承與類別重構
💡 透過繼承提取共通屬性,並以建構子鏈結確保正確初始化。
  • 屬性抽取:將共通屬性如 firstName 移至父類別 Person,落實代碼重用並減少重複。
  • 建構子鏈結:子類建構子須透過 super() 呼叫父類建構子,且該語句必須位於首行。
  • 封裝實務:屬性宣告為 private 並搭配 Getter 方法,確保資料完整性與存取控制。
  • 抽象化設計:Student 維持 abstract 屬性,強制具體子類別實作 setTuition 方法。
🧠 記憶技巧:抽取父類、extends 繼承、super 領頭、封裝必備。
⚠️ 常見陷阱:在子類建構子中忘記呼叫 super() 或將其置於其他邏輯之後,以及在子類中重複宣告父類已有的屬性。
多型性 (Polymorphism) 抽象類別 (Abstract Class) 封裝與存取權限

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

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

🏷️ 相關主題

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