下面提到的场景将以良好的方式清除情况。我愿意调用xDerived1类的虚拟方法。虽然我能够调用xBase类方法和xDerived2类方法。如何从另一个派生类对象调用派生类虚拟方法
((xDerived1)xDer2).myMethod(); // override void myMethod
请帮我一把。
static void Main(string[] args)
{
xDerived2 xDer2 = new xDerived2();
xDer2.myMethod();
((xBase)xDer2).myMethod();
((xDerived1)xDer2).myMethod();
}
public class xBase
{
public virtual void myMethod()
{
Console.WriteLine("virtual void myMethod");
}
}
public class xDerived1 :xBase
{
public new virtual void myMethod()
{
Console.WriteLine("new virtual void myMethod");
}
}
public class xDerived2 : xDerived1
{
public override void myMethod()
{
Console.WriteLine("override void myMethod");
}
}
我想符合:因为myMethod的()在xDerived2被覆盖,并且它是虚拟的在xDerived1中,假设不使用'new'关键字,是否可以调用xDerived1 :: myMethod()? – Zeeshan