C#中的隱藏與重寫:深入解析
面向對象編程中,繼承機制在擴展和修改類行為方面至關重要。然而,在修改方法行為時,存在兩種不同的機制:隱藏和重寫。
隱藏:屏蔽基類方法
隱藏是指派生類聲明一個與從基類繼承的成員同名的成員。與重寫不同,派生類不會建立父子關係。相反,它創建了一個隱藏基類成員的新實體。
以下是一個示例:
<code class="language-csharp">class Animal { public virtual string SayHello() { return "Hello from Animal"; } } class Dog : Animal { public new string SayHello() { return "Hello from Dog"; } }</code>
在這個場景中,Dog中聲明的SayHello()方法隱藏了從Animal繼承的方法。當Dog對象調用SayHello()時,它將執行隱藏的方法,屏蔽基類的實現。
重寫:修改基類方法行為
另一方面,重寫是指子類聲明一個與從父類繼承的方法具有相同簽名的方法。默認情況下,重寫方法繼承基類方法的訪問修飾符和返回類型。但是,它們可以修改實現以自定義行為。
<code class="language-csharp">class Animal { public virtual string SayHello() { return "Hello from Animal"; } } class Dog : Animal { public override string SayHello() { return "Hello from Dog"; } }</code>
在這個示例中,Dog中的SayHello()方法重寫了Animal中定義的方法。當在Dog對像上調用時,將執行重寫的方法,提供特定於狗的自定義行為。
隱藏與重寫的關鍵區別
何時使用隱藏和重寫
隱藏通常用於避免繼承層次結構中的命名衝突,但它也可以用於有選擇地從派生類隱藏繼承的方法。
另一方面,重寫使子類能夠修改繼承方法的行為,從而提供靈活性來自定義類功能,而不會破壞繼承樹。
以上是陰影與C#覆蓋:有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!