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