首页 >后端开发 >C++ >c#继承中的'新”和'覆盖”有什么区别?

c#继承中的'新”和'覆盖”有什么区别?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-28 12:07:08803浏览

What's the Difference Between `new` and `override` in C# Inheritance?

c#继承:理解new>override

> new override在C#继承中,关键字

>和

提供不同的方法来管理派生类中的方法行为。 这种解释阐明了它们的差异和适当的用法。 new

修饰符:定义单独的方法

new> 修饰符允许派生类引入与基类中方法相同名称的方法。 至关重要的是,此

不覆盖基类方法。相反,它创建了一个完全独立的方法。

> >示例:

<code class="language-csharp">public class BaseClass {
    public void MyMethod() { Console.WriteLine("BaseClass Method"); }
}

public class DerivedClass : BaseClass {
    public new void MyMethod() { Console.WriteLine("DerivedClass Method"); }
}</code>

DerivedClass.MyMethod()>这里,MyMethod()是一种独特的方法。 在ADerivedClass>实例上调用BaseClass>执行派生类的版本;在A

>实例上呼唤它执行基类的版本。

> override>修饰符:替换虚拟方法

override>修饰符用于从基类替换虚拟方法的实现。 基类方法必须将其声明为(或virtual)。 abstract确保在派生类的实例中调用该方法时称为派生类的版本。 override

>示例:

在这种情况下,
<code class="language-csharp">public class BaseClass {
    public virtual void MyMethod() { Console.WriteLine("BaseClass Method"); }
}

public class DerivedClass : BaseClass {
    public override void MyMethod() { Console.WriteLine("DerivedClass Method"); }
}</code>
覆盖

。 在ADerivedClass.MyMethod()>实例BaseClass.MyMethod()上呼叫MyMethod()始终DerivedClass执行版本。 DerivedClass

键差总结:

功能 方法创建 创建一个全新的方法 替换现有的虚拟方法 继承 打破了方法的继承链 维护继承链 基类方法 基类方法不受影响 基类方法必须是虚拟/摘要

何时使用每个修饰符:

>
  • >使用new>当您想要在派生类中完全独立的方法时,即使它与基类中的方法共享名称。 这对于避免意想不到的压倒和维持不同的功能很有用。

    >
  • 当您打算扩展或修改基类中定义的虚拟方法的行为时,

    >使用override>在派生类中提供了专门的实现,同时仍在维护该特定方法的继承关系。

  • 通过了解这些区别,您可以有效地利用C#应用中的继承和多态性。

以上是c#继承中的'新”和'覆盖”有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

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