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

第 一 題

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

小題 (一)

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

思路引導 VIP

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

🤖
AI 詳解
AI 專屬家教

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

小題 (二)

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

思路引導 VIP

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

🤖
AI 詳解
AI 專屬家教

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

小題 (三)

修改程式,讓 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 類別管理 firstNamelastName,接著讓 Student 繼承 Person,並在建構子中透過 super() 正確初始化父類別屬性。 【解答】

升級 VIP 解鎖