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

C#继承中方法的'新”和'覆盖”关键字有什么区别?

DDD
DDD原创
2025-01-28 12:01:09856浏览

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

C# 中的 newoverride

面向对象编程中,继承允许派生类继承和扩展基类的功能。在派生类中定义方法时,开发人员经常使用关键字“new”和“override”。虽然这两个关键字似乎具有相似的效果,但它们的目的却截然不同。

情况一:new 关键字

new 关键字表示派生类中的方法是一个全新的方法,与基类中的任何方法都没有关系。即使基类具有相同名称的方法,new 方法也将具有特定于派生类的单独实现。

情况二:override 关键字

另一方面,override 关键字表示派生类中的方法重写了基类中相同方法的实现。编译器确保 override 方法将使用继承链中定义的最新实现,即使对象通过基类引用进行引用。

行为差异

newoverride 之间的关键区别在于它们处理方法调用的方式。如果在基类引用上调用 new 方法,它将执行派生类中的实现。但是,如果调用 override 方法,它将执行派生类中的实现,而不管对象的引用类型如何。

语法示例

以下代码演示了 newoverride 之间的区别:

<code class="language-csharp">public class Base
{
    public virtual void DoIt() { }
}

public class Derived : Base
{
    public new void DoIt() { } // 新的实现
}</code>

在此示例中,在 Derived 类型的对象上调用 DoIt() 将执行 Derived 类中的实现。但是,在 Base 类型的对象上调用 DoIt() 将执行 Base 类中的原始实现,因为 Derived.DoIt() 是一个新方法。

使用案例

  • new当派生类需要与基类相比完全不同的方法实现时使用。
  • override当派生类想要提供继承自基类的不同或改进的方法实现时使用。

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

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