首页 >后端开发 >C++ >覆盖与新的C#:何时应该使用每个关键字修改继承的方法?

覆盖与新的C#:何时应该使用每个关键字修改继承的方法?

Barbara Streisand
Barbara Streisand原创
2025-01-28 12:11:111026浏览

Override vs. New in C#: When Should You Use Each Keyword to Modify Inherited Methods?

理解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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn