問題:函數重寫原理是什麼?答案:函數重寫允許子類別透過宣告一個同名方法並使用 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中文網其他相關文章!