首頁 >後端開發 >C++ >覆蓋與新的C#:何時應該使用每個關鍵字修改繼承的方法?

覆蓋與新的C#:何時應該使用每個關鍵字修改繼承的方法?

Barbara Streisand
Barbara Streisand原創
2025-01-28 12:11:111026瀏覽

Override vs. New in C#: When Should You Use Each Keyword to Modify Inherited Methods?

理解C#中Override和New關鍵字:何時使用它們來修改繼承方法?

面向對象編程中,修改繼承類中的基類方法至關重要。 “override”和“new”關鍵字在此上下文中具有不同的用途:

1. Override關鍵字

“override”修飾符用於顯式地重寫基類中的虛方法或抽象方法。重寫方法時,它提供了一個新的實現,同時保留了原始方法的簽名。無論何時調用該方法,即使通過對基類的引用,都會執行重寫的方法。

2. New關鍵字

“new”修飾符表示繼承的方法是一個不同的實現,它與基類方法具有相同的名稱,但實際上是一個新方法。 “new”方法會屏蔽基類方法,這意味著任何引用基類的代碼都將執行原始實現,而引用繼承類的代碼將執行“new”方法。

示例:

考慮以下代碼片段:

<code class="language-C#">public class Base
{
    public virtual void DoIt() { }
}

public class Derived : Base
{
    public override void DoIt() { }
}</code>

在此示例中,“Derived”類重寫了“DoIt”方法。任何對“Base.DoIt”的引用都將執行“Derived”類中的“DoIt”方法。

<code class="language-C#">public class Base
{
    public virtual void DoIt() { }
}

public class Derived : Base
{
    public new void DoIt() { }
}</code>

在這種情況下,“Derived”類中的“DoIt”被視為一個新方法。對“Base.DoIt”的引用將執行“Base”類中的原始實現,而對“Derived.DoIt”的引用將執行“Derived”類中的新實現。

推薦用法:

重寫方法時,建議使用“override”,因為它保留了方法簽名並允許多態性。另一方面,“new”用於創建與基類方法不同的方法,這可能會破壞繼承關係。

以上是覆蓋與新的C#:何時應該使用每個關鍵字修改繼承的方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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