C# 中的 new
與 override
面向對象編程中,繼承允許派生類繼承和擴展基類的功能。在派生類中定義方法時,開發人員經常使用關鍵字“new”和“override”。雖然這兩個關鍵字似乎具有相似的效果,但它們的目的卻截然不同。
情況一:new
關鍵字
new
關鍵字表示派生類中的方法是一個全新的方法,與基類中的任何方法都沒有關係。即使基類具有相同名稱的方法,new
方法也將具有特定於派生類的單獨實現。
情況二:override
關鍵字
另一方面,override
關鍵字表示派生類中的方法重寫了基類中相同方法的實現。編譯器確保 override
方法將使用繼承鏈中定義的最新實現,即使對象通過基類引用進行引用。
行為差異
new
和 override
之間的關鍵區別在於它們處理方法調用的方式。如果在基類引用上調用 new
方法,它將執行派生類中的實現。但是,如果調用 override
方法,它將執行派生類中的實現,而不管對象的引用類型如何。
語法示例
以下代碼演示了 new
和 override
之間的區別:
<code class="language-csharp">public class Base { public virtual void DoIt() { } } public class Derived : Base { public new void DoIt() { } // 新的实现 }</code>
在此示例中,在 Derived 類型的對像上調用 DoIt() 將執行 Derived 類中的實現。但是,在 Base 類型的對像上調用 DoIt() 將執行 Base 類中的原始實現,因為 Derived.DoIt() 是一個新方法。
使用案例
new
:當派生類需要與基類相比完全不同的方法實現時使用。 override
:當派生類想要提供繼承自基類的不同或改進的方法實現時使用。 以上是C#繼承中方法的'新”和'覆蓋”關鍵字有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!