C#中的方法重寫與隱藏
在繼承方面,C# 提供了兩種不同的技術來重新定義基類中的方法:重寫和隱藏。這兩種技術在工作方式和對繼承鏈的影響方面存在根本區別。
隱藏
隱藏允許您創建一個與基類中方法同名的新方法,但不使用 override
關鍵字。此方法成為派生類的局部成員,將基類方法隱藏起來。當派生類的實例調用隱藏方法時,它會直接執行該類中的實現,而不管繼承層次結構如何。
示例:
<code class="language-csharp">class A { public int Foo(){ return 5;} public virtual int Bar(){return 5;} } class B : A { public new int Foo() { return 1;} //隐藏 public override int Bar() {return 1;} //重写 }</code>
在此示例中,方法 Foo
在類 B
中被隱藏,而方法 Bar
被重寫。當 clB
(B
的實例)調用 Foo
時,它返回 1
,因為直接執行 B
中的 Foo
。
重寫
與隱藏相反,重寫需要 override
關鍵字。它允許您在基類中定義虛擬方法的新實現。當派生類的實例調用重寫的方法時,它會按照繼承鏈執行派生類中的實現。
示例:
在前面的示例中,類 B
中的方法 Bar
被重寫。當 clB
調用 Bar
時,它返回 1
,因為 B
中的 Bar
是重寫實現。
隱藏與重寫的區別
隱藏和重寫之間的選擇取決於您的具體需求:
以上是C#中的覆蓋與陰影:您什麼時候應該使用每種技術?的詳細內容。更多資訊請關注PHP中文網其他相關文章!