C# 中的 new
与 override
面向对象编程中,继承允许派生类继承和扩展基类的功能。在派生类中定义方法时,开发人员经常使用关键字“new”和“override”。虽然这两个关键字似乎具有相似的效果,但它们的目的却截然不同。
情况一:new
关键字
new
关键字表示派生类中的方法是一个全新的方法,与基类中的任何方法都没有关系。即使基类具有相同名称的方法,new
方法也将具有特定于派生类的单独实现。
情况二:override
关键字
另一方面,override
关键字表示派生类中的方法重写了基类中相同方法的实现。编译器确保 override
方法将使用继承链中定义的最新实现,即使对象通过基类引用进行引用。
行为差异
new
和 override
之间的关键区别在于它们处理方法调用的方式。如果在基类引用上调用 new
方法,它将执行派生类中的实现。但是,如果调用 override
方法,它将执行派生类中的实现,而不管对象的引用类型如何。
语法示例
以下代码演示了 new
和 override
之间的区别:
<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中文网其他相关文章!