是否可以调用基本方法的基础? I.E.不是'直接'派生类的祖先?
public class a
{
public virtual void test() { }
}
public class b : a
{
public override void test()
{
//...
base.test();
}
}
public class c : b
{
public override void test()
{
//...
//possible to call test() in class a, without calling it in class b?
//((a)base).test(); //doesnt work
}
}
答案 0 :(得分:4)
不,这是不可能的,违背了OOP原则。如果你需要这样做,你可能会错误地设计你的系统。
答案 1 :(得分:3)
不是用C#。 C#只允许您在直接基类上调用方法。
另一方面,CLR允许它。您可以通过反射或直接编写IL来实现。我假设C ++ / CLI也支持这一点。
但我会重新考虑这个设计。跳过覆盖有害设计的气味并打破基类的封装。