C# 方法隐藏与重写:详解
在C#中,派生类可以通过两种不同的方式操作基类方法:方法隐藏和方法重写。理解这两种概念的区别对于有效的代码维护和继承实现至关重要。
方法隐藏
当一个类声明一个与基类中方法同名的新方法,但没有显式声明为重写方法时,就会发生方法隐藏。新声明的方法有效地隐藏了基类的实现,并提供了它自己的独立实现。
示例:
<code class="language-csharp">class A { public int Foo(){ return 5;} } class B : A{ public new int Foo() { return 1;} //隐藏 }</code>
当B类的实例clB调用clB.Foo()时,它执行B类中定义的实现,输出“1”。但是,当我们将clB强制转换为A类时,调用者访问Foo()的基类实现,输出“5”。
方法重写
与隐藏不同,方法重写显式地用派生类中的新实现替换基类方法的实现。这是通过使用override关键字实现的。
示例:
<code class="language-csharp">class A { public virtual int Bar(){return 5;} } class B : A{ public override int Bar() {return 1;} //重写 }</code>
当B类的实例clB调用clB.Bar()时,它执行B类中的重写实现,输出“1”。将clB强制转换为A类不会影响行为,因为始终调用重写实现。
主要区别
以上是C#中的方法阴影和覆盖有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!