1 子类方法覆盖(override)父类中对应的方法。
覆盖时要求名字相同、参数一致、子类方法使用override关键字,父类方法带有virtual关键字。
如果父类中对应的方法不带virtual关键字, 则override行为导致编译器报错can not override a non-virtual method;
覆盖方法将产生多态或者迟绑定效应。
2 子类方法重定义(redefine)父类中对应的方法。
要求名字相同,参数一致。
3 子类方法重载(overload)父类中对应的方法。
要求名字相同,参数不一致。当父类中对应方法带有virtual关键字时,编译器会提警告‘子类隐藏了父类虚方法’,这时可以为子类方法增加reintroduce;关键字.
举例如下
tmyclass = classprocedure one; virtual;
//procedure two; //
procedure three; virtual;
procedure four;
procedure five; virtual;
procedure six;
end;
tmysubclass = class(tmyclass)
procedure one; override;//虚方法覆盖
//procedure two; override; //一般方法覆盖。编译报错
//Cannot override a non-virtual method
procedure three; //虚方法的重定义