理解繼承中的new
和override
修飾符
面向對象編程中,繼承允許派生類重用和修改基類中定義的方法。然而,new
和override
是兩種不同的修飾符,它們可以與繼承的方法一起使用,各自具有特定的用途。
情況一:使用new
修飾符的繼承方法
使用new
修飾符時,派生類創建了一個與基類方法同名的單獨方法。這實際上隱藏了基類方法在派生類中的可見性。直接引用基類的代碼將使用基類方法的實現,而引用派生類的代碼將使用派生類方法的實現。
情況二:使用override
修飾符的繼承方法
另一方面,override
修飾符表示派生類方法旨在用具有相同簽名的基類方法替換。這意味著當在對基類的引用上調用該方法時,它將始終使用在派生類中定義的實現。
關鍵區別
new
隱藏基類方法,而override
替換它。 new
始終調用派生類方法,而override
調用最後定義的實現,即使通過基類引用訪問也是如此。 new
可以用來創建方法的完全不同版本,而override
用於擴展或修改基類方法的行為。 示例
考慮以下基類和派生類:
<code class="language-csharp">public class Base { public virtual void DoIt() { Console.WriteLine("Base.DoIt"); } } public class Derived : Base { public override void DoIt() { Console.WriteLine("Derived.DoIt"); } }</code>
在此示例中,派生類中的override
修飾符確保當在Derived類的實例上調用DoIt()時,它將執行Derived.DoIt中定義的實現,而不管使用的引用類型是什麼。
以上是新與覆蓋:何時應該在繼承中使用每個方法修飾符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!