C#的virtual方法小结
程序员文章站
2022-05-20 12:20:37
...
定义为virtual的方法可以在子类里被重写,使用override可以用自己的方法重写新的基类方法。
class YourDerivedGraphicsClass : GraphicsClass
{
public override void DrawRectangle() { }
}
override 关键字可确保派生自 YourDerivedGraphicsClass 的任何对象都将使用 DrawRectangle 的派生类版本。 派生自 YourDerivedGraphicsClass 的对象仍可以使用基关键字访问 DrawRectangle 的基类版本。
使用 new 关键字可告诉编译器您的定义将隐藏基类中包含的定义。 这是默认行为。
没有定义virtural的方法,可以在子类里有相同的方法出现,默认使用new于子类的同名方法,从而隐藏父类的同名方法。
如果方法是Virtual的,然后子类使用了override, 编译器就生产代码。然后,在运行的时候,进行检测,看对象属于哪个类,然后调用这个类的方法。