第六章 —— Inheritance and Object-Oriented Design 深入探討了「繼承」在物件導向設計中的實踐和挑戰,並詳細介紹如何正確構造 class 結構以避免過度繼承,從而提高系統的可維護性和靈活性。讓我們一起努力成為 C++ 達人吧!
繼承是物件導向最核心的概念之一,允許使用者構建可重複使用且易於維護的程式碼,實現「多型」和「抽象」。
公共繼承表示衍生類別是基底類別的「特殊化版本」。使用公共繼承時,衍生類別必須無條件繼承基底類別的所有特性與介面。
舉例來說,我們撰寫一個名為 Student
的基底類別:
class Student {
public:
int age;
string school;
string thesis;
};
衍生類別 Yoyo
繼承自 Student
,並在此基礎上添加更多的特性:
class Yoyo : public Student {
public:
int salary;
};
然而 Bob
求學期間並未發表過 thesis
,故無法從 Student
公共繼承。
「名稱隱藏」常發生在基底類別與衍生類別定義了相同名稱的重載函式。為了解決此問題,可在衍生類別使用 using Base::foo;
,將基底類別的重載函式重新引入衍生類別的 scope 中。
若衍生類別僅需基底類別某一特定重載函式,可直接寫成 inline 函式。
在公共繼承中,成員函式可分為三類。
知識點 7 可以複習「多型」和「虛擬函式」之間的關係。