首頁 > 後端開發 > C++ > 函數重寫原則揭秘:子類別如何掌控父類別行為

函數重寫原則揭秘:子類別如何掌控父類別行為

WBOY
發布: 2024-05-04 09:06:02
原創
1050 人瀏覽過

問題:函數重寫原理是什麼?答案:函數重寫允許子類別透過宣告一個同名方法並使用 override 關鍵字,重新定義從父類別繼承的方法,從而控制父類別行為。步驟:在子類別的建構子中宣告虛擬方法,使用 virtual 關鍵字標記。指定方法傳回值類型、名稱和參數列表,與父類別方法相同。使用 override 關鍵字明確聲明該方法為重寫。

函數重寫原則揭秘:子類別如何掌控父類別行為

函數重寫原則揭秘:子類別如何掌控父類別行為

重寫(Overriding)是物件導向程式設計中至關重要的概念,它允許子類別重新定義從父類別繼承的方法。透過重寫,子類別可以自訂其父類別的行為,同時保持基底類別程式碼的相容性。

瞭解重寫

重寫在子類別的建構子中聲明,格式如下:

virtual <return type> <function name>(<parameter list>) override;
登入後複製
  • virtual 關鍵字表示方法可以被子類別重寫。
  • <return type> 指定方法的回傳值類型。
  • <function name> 是被重寫的方法名稱。
  • <parameter list> 是方法的參數清單。
  • override 關鍵字明確聲明該方法是對父類別方法的重寫。

實戰案例

為了說明函數重寫,我們建立一個帶有draw() 方法的Shape 基底類別和一個名為Circle 的子類別:

class Shape {
public:
    virtual void draw() { cout << "Drawing Shape" << endl; }
};

class Circle : public Shape {
public:
    void draw() override { cout << "Drawing Circle" << endl; }
};
登入後複製

Shape 類別的draw() 方法被宣告為virtual,這表示它可以被Circle 類別重寫。在 Circle 類別中,draw() 方法被重新定義,並列印出 "Drawing Circle"。

重寫工作原理

當子類別物件呼叫draw() 方法時,編譯器會動態選擇與該物件關聯的適當實現。如果物件是一個 Circle 實例,則會呼叫重寫後的 Circle::draw() 方法。否則,它將呼叫基底類別的 Shape::draw() 方法。

優點

函數重寫提供了以下優點:

  • 允許子類別根據需要自訂其父類別行為。
  • 維護程式碼的可擴充性和可重複使用性。
  • 促進程式碼重構,無需修改基底類別。

注意事項

重寫時應遵循以下注意事項:

  • 方法簽章(傳回型別與參數清單)必須與父類別方法相同。
  • 重寫的方法不能比其父類別方法的存取權限等級更嚴格。
  • 重寫的方法通常會使用 override 關鍵字,以提供編譯時檢查並防止意外重寫。

以上是函數重寫原則揭秘:子類別如何掌控父類別行為的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板