Q38.
關於物件導向語言覆寫(Overriding) Function/Method 的敘述,以下何者正確?
電腦軟體設計共同科目 · 乙級 · Q38
難易度分析
3 / 5
本題考查對物件導向核心概念的定義掌握程度,特別是需要能精確區分方法簽章的一致性要求,並將其與另一種相似的機制進行對比。由於選項中設計了易混淆的概念陷阱,要求考生必須對術語定義有精準的記憶而非模糊的理解。
正確答案:②基礎類別和導出類別的Function/Method 同名,也有相同數量和型態的參數
② 基礎類別和導出類別的Function/Method 同名,也有相同數量和型態的參數:方法覆寫(Method Overriding) 的嚴格定義是:子類別重新定義與父類別同名、同參數數量、同參數型態的方法,確保方法簽章(Method Signature) 完全匹配,才能透過多型(Polymorphism) 機制在執行時期動態綁定正確的方法實作。
錯誤選項解析
- ① 基礎類別和導出類別的Function/Method 同名,但有不同的可視性修飾子(Visibility Modifiers):覆寫(Overriding) 的核心在於方法簽章完全一致,而非可視性修飾子的差異。雖然子類別可調整存取層級,但必須遵守「不可比父類別更嚴格」的規則,此選項混淆了覆寫與存取控制的概念。
- ③ 基礎類別和導出類別的Function/Method 同名,有不同的回傳值資料型態:覆寫時回傳值資料型態必須與父類別方法相同或為其協變回傳類型(Covariant Return Type),單純改變回傳型態會導致編譯錯誤,此選項違反了方法簽章一致性的基本原則。
- ④ 基礎類別和導出類別Function/Method 有不同數量和型態的參數:參數數量和型態不同描述的是方法多載(Method Overloading) 而非覆寫。Overloading 發生在同一類別內同名方法的多種參數組合,屬於編譯時期多型;Overriding 則是執行時期多型,兩者機制截然不同。
Learning Tip
"此題核心考點在於區分 Overriding(覆寫) 與 Overloading(多載) 的本質差異。覆寫要求「同名+同簽章」以實現執行時期多型;多載則是「同名+不同參數列」屬於編譯時期綁定。常見陷阱是將兩者混淆,或誤認回傳型態可任意更改。實務上需牢記 Liskov 替換原則,子類別行為必須能安全取代父類別。"
學員答題分佈
①基礎類別和導出類別的Function/Method 同名,但有不同的可視性修飾子(Visibility Modifiers)0%
②基礎類別和導出類別的Function/Method 同名,也有相同數量和型態的參數0%
③基礎類別和導出類別的Function/Method 同名,有不同的回傳值資料型態0%
④基礎類別和導出類別Function/Method 有不同數量和型態的參數0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!