C#中的方法重写与隐藏
在继承方面,C# 提供了两种不同的技术来重新定义基类中的方法:重写和隐藏。这两种技术在工作方式和对继承链的影响方面存在根本区别。
隐藏
隐藏允许您创建一个与基类中方法同名的新方法,但不使用 override
关键字。此方法成为派生类的局部成员,将基类方法隐藏起来。当派生类的实例调用隐藏方法时,它会直接执行该类中的实现,而不管继承层次结构如何。
示例:
<code class="language-csharp">class A { public int Foo(){ return 5;} public virtual int Bar(){return 5;} } class B : A { public new int Foo() { return 1;} //隐藏 public override int Bar() {return 1;} //重写 }</code>
在此示例中,方法 Foo
在类 B
中被隐藏,而方法 Bar
被重写。当 clB
(B
的实例)调用 Foo
时,它返回 1
,因为直接执行 B
中的 Foo
。
重写
与隐藏相反,重写需要 override
关键字。它允许您在基类中定义虚拟方法的新实现。当派生类的实例调用重写的方法时,它会按照继承链执行派生类中的实现。
示例:
在前面的示例中,类 B
中的方法 Bar
被重写。当 clB
调用 Bar
时,它返回 1
,因为 B
中的 Bar
是重写实现。
隐藏与重写的区别
隐藏和重写之间的选择取决于您的具体需求:
以上是C#中的覆盖与阴影:您什么时候应该使用每种技术?的详细内容。更多信息请关注PHP中文网其他相关文章!