理解C#中Override和New关键字:何时使用它们来修改继承方法?
面向对象编程中,修改继承类中的基类方法至关重要。“override”和“new”关键字在此上下文中具有不同的用途:
1. Override关键字
“override”修饰符用于显式地重写基类中的虚方法或抽象方法。重写方法时,它提供了一个新的实现,同时保留了原始方法的签名。无论何时调用该方法,即使通过对基类的引用,都会执行重写的方法。
2. New关键字
“new”修饰符表示继承的方法是一个不同的实现,它与基类方法具有相同的名称,但实际上是一个新方法。“new”方法会屏蔽基类方法,这意味着任何引用基类的代码都将执行原始实现,而引用继承类的代码将执行“new”方法。
示例:
考虑以下代码片段:
<code class="language-C#">public class Base { public virtual void DoIt() { } } public class Derived : Base { public override void DoIt() { } }</code>
在此示例中,“Derived”类重写了“DoIt”方法。任何对“Base.DoIt”的引用都将执行“Derived”类中的“DoIt”方法。
<code class="language-C#">public class Base { public virtual void DoIt() { } } public class Derived : Base { public new void DoIt() { } }</code>
在这种情况下,“Derived”类中的“DoIt”被视为一个新方法。对“Base.DoIt”的引用将执行“Base”类中的原始实现,而对“Derived.DoIt”的引用将执行“Derived”类中的新实现。
推荐用法:
重写方法时,建议使用“override”,因为它保留了方法签名并允许多态性。另一方面,“new”用于创建与基类方法不同的方法,这可能会破坏继承关系。
以上是覆盖与新的C#:何时应该使用每个关键字修改继承的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!