是否可以在不使用New关键字的情况下执行方法隐藏?

时间:2015-02-03 16:06:40

标签: c# oop

今天我接受了一次采访,我被问到了

  

是否可以在不使用New关键字的情况下执行方法隐藏?

据我所知,这是不可能的。所以我说了。

是否有任何(严重的)棘手/替代方法来执行方法隐藏?我曾想过 密封 ....

还喜欢 显式界面 ,有什么类似的东西......(不确定)

被修改

关于这个主题的最后一个问题,就像我们可以为显式接口做的那样

 Interfacename.Method name

我们可以为派生类做类似的事情。

Class Derived:Base
{ 
  public void Base.SomeMethod(){}
}

1 个答案:

答案 0 :(得分:8)

绝对 - 如果你没有指定任何,你仍然可以获得与new修饰符相同的效果,但你也会收到警告。

当然,还有明确的界面实现。

在这两种情况下,只需将目标转换为其他类型即可取消隐藏"方法:

((BaseClass) x).SomeMethod();
((IFoo) x).SomeMethod();

密封类与方法隐藏无关 - 或者更确切地说,它通过确保 没有派生类来阻止任何派生类隐藏方法。