父类:
public class A
{
public void FunctionA()
{
FunctionB();
}
public virtual void FunctionB()
{
}
}
public class B : A
{
public void main()
{
B b = new B();
b.FunctionA();
}
public override void FunctionB()
{
//具体实现
}
}
FunctionA为轮询方法,其中有公告的方法实现,FunctionA根据条件调用FunctionB,但是FunctionB中的业务逻辑不确定,根据具体实现场景不同,如可能是新建、删除等,所以将FunctionB定义为virtual,子类B继承父类A,并override虚方法FunctionB,这样在b.FunctionA()时,先执行a.FunctionA(),再执行b.functionB(实现了虚方法的具体逻辑),这样就可以根据不同的子类场景编写不同的FunctionB的处理逻辑
犯二的时刻:刚开始实例化的是A,即A a=new A(),执行a.FunctionA(),始终进入不了override的方法体内