C# 方法隱藏與重寫:詳解
在C#中,派生類可以通過兩種不同的方式操作基類方法:方法隱藏和方法重寫。理解這兩種概念的區別對於有效的代碼維護和繼承實現至關重要。
方法隱藏
當一個類聲明一個與基類中方法同名的新方法,但沒有顯式聲明為重寫方法時,就會發生方法隱藏。新聲明的方法有效地隱藏了基類的實現,並提供了它自己的獨立實現。
示例:
<code class="language-csharp">class A { public int Foo(){ return 5;} } class B : A{ public new int Foo() { return 1;} //隐藏 }</code>
當B類的實例clB調用clB.Foo()時,它執行B類中定義的實現,輸出“1”。但是,當我們將clB強制轉換為A類時,調用者訪問Foo()的基類實現,輸出“5”。
方法重寫
與隱藏不同,方法重寫顯式地用派生類中的新實現替換基類方法的實現。這是通過使用override關鍵字實現的。
示例:
<code class="language-csharp">class A { public virtual int Bar(){return 5;} } class B : A{ public override int Bar() {return 1;} //重写 }</code>
當B類的實例clB調用clB.Bar()時,它執行B類中的重寫實現,輸出“1”。將clB強制轉換為A類不會影響行為,因為始終調用重寫實現。
主要區別
以上是C#中的方法陰影和覆蓋有什麼區別?的詳細內容。更多資訊請關注PHP中文網其他相關文章!