首页 >后端开发 >C++ >新与覆盖:何时应该在继承中使用每个方法修饰符?

新与覆盖:何时应该在继承中使用每个方法修饰符?

Susan Sarandon
Susan Sarandon原创
2025-01-28 11:51:09812浏览

new vs. override: When Should You Use Each Method Modifier in Inheritance?

理解继承中的newoverride修饰符

面向对象编程中,继承允许派生类重用和修改基类中定义的方法。然而,newoverride是两种不同的修饰符,它们可以与继承的方法一起使用,各自具有特定的用途。

情况一:使用new修饰符的继承方法

使用new修饰符时,派生类创建了一个与基类方法同名的单独方法。这实际上隐藏了基类方法在派生类中的可见性。直接引用基类的代码将使用基类方法的实现,而引用派生类的代码将使用派生类方法的实现。

情况二:使用override修饰符的继承方法

另一方面,override修饰符表示派生类方法旨在用具有相同签名的基类方法替换。这意味着当在对基类的引用上调用该方法时,它将始终使用在派生类中定义的实现。

关键区别

  • 方法可见性:new隐藏基类方法,而override替换它。
  • 调用解析:new始终调用派生类方法,而override调用最后定义的实现,即使通过基类引用访问也是如此。
  • 用例:new可以用来创建方法的完全不同版本,而override用于扩展或修改基类方法的行为。

示例

考虑以下基类和派生类:

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

public class Derived : Base
{
    public override void DoIt()
    {
        Console.WriteLine("Derived.DoIt");
    }
}</code>

在此示例中,派生类中的override修饰符确保当在Derived类的实例上调用DoIt()时,它将执行Derived.DoIt中定义的实现,而不管使用的引用类型是什么。

以上是新与覆盖:何时应该在继承中使用每个方法修饰符?的详细内容。更多信息请关注PHP中文网其他相关文章!

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