父类中的c#虚方法调用另一个在子类中重写的虚方法
假设我有一个c类a,它继承自B类,B类又继承自c类父类中的c#虚方法调用另一个在子类中重写的虚方法,c#,C#,假设我有一个c类a,它继承自B类,B类又继承自c类 Class A : Class B {} Class B : Class C { override OnIntialise() { do something else... } } Class C { virtual Initialise() { OnIntialise(); } virtual OnInitialise() { do s
Class A : Class B
{}
Class B : Class C
{
override OnIntialise()
{
do something else...
}
}
Class C
{
virtual Initialise()
{
OnIntialise();
}
virtual OnInitialise()
{
do something...
}
}
现在,当我调用a.Initialise()时,程序将调用类C中定义的方法Initialise()。在Initialise()中,方法OnInitialise()是否在类C或类B中定义?在这种情况下,将调用类B的方法初始化,因为它在子类中被重写,即类B。如果该方法在类
A
中被重写,那么类A
中的方法将被调用。如果在类C的Initialise()方法中是this.OnInitialise(),会是相同的。不过,您可以通过在代码中放置断点来查看流程。“是否会调用类C或类B中定义的OnInitialise()方法?”--尝试该方法时发生了什么?关于你观察到的结果,你不了解什么?为什么要让整个堆栈溢出社区参与一些您可以轻松测试自己的事情?