C# 中 virtual 和 new 關鍵字的用法
面向對象編程中,通常在基類中定義方法,並在派生類中重寫或重新定義這些方法。雖然 "virtual" 和 "new" 關鍵字都可以用來修改方法聲明,但它們有不同的實現方式。
virtual 重寫
new 關鍵字
示例
考慮以下代碼:
<code class="language-csharp">public class Base { public virtual bool DoSomething() { return false; } } public class Derived : Base { public override bool DoSomething() { return true; } }</code>
如果我們創建一個 Derived 的實例並將其存儲在 Base 類型的變量中,對 DoSomething() 的調用將調用 Derived 中重寫的方法:
<code class="language-csharp">Base a = new Derived(); a.DoSomething(); // 返回 true</code>
相反,如果我們在 Derived 中使用 new 關鍵字,對 DoSomething() 的調用將調用 Derived 中的新方法,即使變量是 Base 類型:
<code class="language-csharp">public class Derived : Base { public new bool DoSomething() { return true; } }</code>
<code class="language-csharp">Base a = new Derived(); a.DoSomething(); // 返回 true (Derived 中的新方法)</code>
何時使用 virtual 重寫與 new
以上是C# 中的虛擬與新功能:何時重寫或隱藏基類方法?的詳細內容。更多資訊請關注PHP中文網其他相關文章!