C++ 函數繼承詳解:掌握“is-a”和“has-a”關系
什么是函數繼承?
函數繼承是 C++ 中一種將派生類中定義的方法與基類中定義的方法關聯起來的技術。它允許派生類訪問和重寫基類的方法,從而擴展了基類的功能。
“is-a”和“has-a”關系
在函數繼承中,“is-a”關系指派生類是基類的子類型,也就是說,派生類“繼承”了基類的特性和行為。“has-a”關系指派生類包含對基類對象的引用或指針,也就是說,派生類“擁有”了基類對象。
語法
以下是如何實現函數繼承的語法:
class DerivedClass : public BaseClass { public: // 派生類中定義的方法(可能會重寫基類方法) };
登錄后復制
實戰案例
讓我們通過一個簡單的例子來理解函數繼承:
基類 Shape
class Shape { public: virtual void draw() { // 基類繪圖行為 } };
登錄后復制
派生類 Rectangle
派生類 Rectangle“is-a” Shape,即 Rectangle 是 Shape 的一種類型。它繼承了 Shape 的 draw() 方法并重寫了它以提供矩形的特定繪圖行為:
class Rectangle : public Shape { public: virtual void draw() override { // 派生類繪圖行為(繪制矩形) } };
登錄后復制
使用示例
現在,我們可以使用 Rectangle 類來創建對象并調用 draw() 方法:
Rectangle rectangle; rectangle.draw(); // 調用派生類中重寫的繪圖行為
登錄后復制
結論
通過理解“is-a”和“has-a”關系,你可以高效地使用函數繼承來擴展 C++ 類的功能并創建更有組織和可維護的代碼。