把一个基类函数声明为virtual,就可以在任何派生类中重写该函数:
class MyBaseClass
{
public virtual string VirtualMethod()
{
return "Method is called in base class";
}
}
在派生类中重写另外一个函数时,要使用override关键字显示声明
class MyDerivedClass:MyBaseClass
{
public override string VirtualMethod()//重写 : 原来的方法不存在了
{
return "Method is called in derivedclass.";
}
}
调用
MyBaseClass enemy = new MyDerivedClass();
enemy.VirtualMethod();
MyDerivedClass enemy = new MyDerivedClass();
enemy.VirtualMethod();
最后的结果都会显示 “Method is called in derivedclass.”
我们在子类里面重写虚函数之后,不管在哪里调用,都是调用重写之后的方法