免費開始練習
普考申論題 111年 [資訊處理] 程式設計概要

第 二 題

📖 題組:
以下二小題是完整的物件導向程式碼,請回答以下各小題。(每小題 10 分,共 20 分)
📝 此題為申論題,共 2 小題

小題 (二)

以下為 C#的類別程式碼,類別 Employee 內的欄位不可以由非繼承的類別讀取或寫入,請檢視此程式是否可以正確執行?若無法正確執行的話,請寫出正確的程式碼。
public abstract class Employee {
private string id;
private string name;
private int age;
public Employee() {
}
}
public class Staff : Employee {
public Staff(string _id, string _name, int _age) {
this.id = _id;
this.name = _name;
this.age = _age;
}
}

思路引導 VIP

本題考查封裝與繼承的修飾詞(Access Modifiers)。關鍵爭點:private 成員能否被子類別直接存取?題目要求「不可以由非繼承的類別讀取」,隱含的意思是「可以由繼承的類別讀取」。目前的 private 限制太嚴,會導致子類別編譯失敗。應改用何種修飾詞?

🤖
AI 詳解
AI 專屬家教

【考點分析】 C# 存取修飾詞:private(僅限類別內部)vs. protected(僅限類別及其子類別)。 【理論/法規依據】

小題 (一)

以下為 Python 完整程式碼,請回答執行的結果為何?
class Employee:
all = []
def __init__(self, idno, first_name, last_name):
self.id = idno
self.first_name = first_name
self.last_name = last_name
Employee.all.append(self)
def __repr__(self):
return f"(ID={self.id}, Name={self.first_name} {self.last_name})"

if __name__ == "__main__":
e1 = Employee('001', 'Peter', 'Lee')
e2 = Employee('002', 'Ann', 'Lo')
print(Employee.all)

思路引導 VIP

這題考查 Python 的類別變數與物件表示法。關鍵點有二:1. all = [] 是類別變數,所有實例共享,且在建構式中被 append。2. __repr__ 方法定義了當物件被放入列表並列印時的顯示字串。考生需精確寫出字串格式,包括括號、空格與逗號。

🤖
AI 詳解
AI 專屬家教

【考點分析】 Python 類別屬性(Class Attribute)、建構子(__init__)、物件表示法(__repr__)。 【分析與論述】

🏷️ 相關主題

物件導向程式設計概念與應用
查看更多「[資訊處理] 程式設計概要」的主題分類考古題