理解继承中的new
和override
修饰符
面向对象编程中,继承允许派生类重用和修改基类中定义的方法。然而,new
和override
是两种不同的修饰符,它们可以与继承的方法一起使用,各自具有特定的用途。
情况一:使用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中文网其他相关文章!