我正在使用C#。我有两个A和B类.B继承自A.它们都有一个Foo()方法(在A中是虚拟的)。现在,如果我有
A b = new B();
int x = b.Foo();
然后调用来自A的Foo()。但是如果B中的Foo()具有'new'关键字,则再次调用基类中的Foo()。那么,为什么我会使用阴影?
答案 0 :(得分:3)
我使用方法隐藏的唯一情况是当我想在派生类中返回派生类型时(从这两个方法返回的实际对象在这里应该是相同的)。当然,这只是围绕C#缺乏结果类型协方差的黑客攻击。
答案 1 :(得分:2)
答案 2 :(得分:1)
使用new
意味着:不要覆盖。
new
的仅效果是禁止编译器隐藏基本成员的警告。它永远不会导致调用不同的方法。
答案 3 :(得分:0)
它对多态性非常有用
This post可能是一个好的开始
Hasan Khan还发了一篇我要提及的好文章(不再需要了)
This other post也可能有所帮助。