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