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

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

WBOY
WBOY原創
2024-05-04 09:06:021010瀏覽

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

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

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

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

瞭解重寫

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

virtual <return type> <function name>(<parameter list>) override;
  • virtual 關鍵字表示方法可以被子類別重寫。
  • <return type></return> 指定方法的回傳值類型。
  • <function name></function> 是被重寫的方法名稱。
  • <parameter list></parameter> 是方法的參數清單。
  • 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn