[英]Is is possible to override a hidden method?
说我有以下层次结构:
public class MyClass
{
protected virtual void Method() { ... }
}
public class MySubClass : MyClass
{
public new virtual void Method() { ... }
}
public class MySubSubClass : MySubClass
{
// how do I reference the protected Method() to override it?
}
是否可以重写protected
Method()的实现,以便将MyClass中定义的其他方法的调用分派到MySubSubClass中的实现?
如果不可能的话,请告诉我们为什么。
如果您尝试覆盖MyClass
定义的Method版本,那么答案是您不能。 MySubClass
的定义对MySubClass
隐藏了此实现,您无法进一步覆盖它。
如果将隐藏方法标记为也是虚拟的,则可以覆盖隐藏方法:
public new virtual void Method()
是。 您可以使用“ new”关键字来重新引入所需的任何方法。 从那时起,对“ newed”方法的每次调用都将针对新的实现。
在这种情况下,只要有问题的对象是MySubSubClass
类型,对MyClass
Method()
任何调用都将使用MySubSubClass
实现。
正如@Jared所说,您不能。 我只能假设您要避免再次使用new
,因为您需要适当的virtual
处理。 您要解决此问题的唯一方法是,摆脱Method()
的public new
版本并将其命名为其他名称。 new
完全隐藏了您要重新声明的方法的所有版本,该版本可能存在于祖先对象中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.