Delphi之virtual,dynamic,abstract,override,overload
Delphi之virtual,dynamic,abstract,override,overload,reintroduce的用法
1.方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写Overriding是父类与子类之间多态性的一种表 现,重载Overloading是一个类中多态性的一种表现。
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写
(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方
法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
2. Delphi 的函数覆盖(Override)与重载(overload)
procedure Draw; virtual;
在需要覆盖的时候,只需要在子类中用override 指示字重新声明一下就可以了。
procedure Draw; override;
4.关于方法定义关键字的说明:
制,virtual方法为执行速度做了优化,而dynamic方法则为代码大小做了优化;经常被覆盖的
方法应该定义为virtual方法;
用消息处理方法来响应Windows的消息,这样就不用直接来调用它;
及返值的类型必须匹配;用于扩展祖先类中的该方法而不是取代它(如不调用祖先类中的该方
法则等同于取代);
(属性的读写方法不能被重载);
在abstract前面必须有virtual或dynamic关键字,其实现部分在派生类中;如
5.virtual 和 dynamic定义的虚函数,都是为了子类override用的,只不过它们的实现不一样。vitrual 占用的空间大点,但速度快些。dynamci
正好相反
从《Delphi_5开发人员指南》中抄一节给你: