首頁 >後端開發 >C++ >C# 中的覆蓋與隱藏:有什麼區別?

C# 中的覆蓋與隱藏:有什麼區別?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-18 08:32:09123瀏覽

Overriding vs. Hiding in C#: What's the Difference?

C# 中的方法重寫與方法隱藏

在 C# 中,方法重寫和方法隱藏是兩種不同的機制,用來修改繼承的方法。

方法重寫 (Overriding)

方法重寫涉及在基底類別中建立虛方法 (virtual),並在衍生類別中重新定義其實作。這允許衍生類別提供更具體或修改後的方法版本,同時保留相同的方法名稱和參數。

方法重寫用於以下情況:

  • 您希望衍生類別提供從基底類別繼承的方法的自訂實作。
  • 基類方法標​​示為virtual
  • 在衍生類別中的方法宣告中使用 override 關鍵字。

方法隱藏 (Method Hiding)

方法隱藏涉及建立具有與基底類別方法相同名稱和參數的新方法 (new)。與方法重寫不同,方法隱藏在衍生類別中建立了一個全新的方法,並且不會修改基底類別方法。

方法隱藏用於以下情況:

  • 您希望在衍生類別中引入一個與基底類別方法同名的不同方法。
  • 基類中的方法未宣告為virtual
  • 在衍生類別中的方法宣告中使用 new 關鍵字。

實際應用

方法重寫 (Overriding):

  • 自訂繼承的方法
  • 提供多態性行為

方法隱藏 (Method Hiding):

  • 向前相容性(避免將來添加新方法時出現問題)
  • 傳回型別的協變性(從基底類別方法傳回衍生類別實例)

範例

以下範例示範了方法重寫和方法隱藏:

<code class="language-csharp">class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Generic animal sound");
    }
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Bark");
    }

    public new void Run()   // 方法隐藏
    {
        Console.WriteLine("Dog running");
    }
}</code>

在此範例中,MakeSound 方法在 Dog 類別中被重寫以提供具體的實作。 Run 方法被隱藏,在 Dog 類別中建立了一個新方法。

以上是C# 中的覆蓋與隱藏:有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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