Delphi的OverRide、OverLoad和Virtual方法
来源:互联网 发布:centos 7.2 snmp 编辑:程序博客网 时间:2024/05/16 13:44
如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。
2. Delphi 的函数覆盖(Override)与重载(overload)
而Delphi 就是用override 关键字来说明函数覆盖的。被覆盖的函数必须是虚(virtual)的,或者是动态(dynamic)的,也就是说该函数在声明时应该包含这两个指示字中的一个,比如:
procedure Draw; virtual;
在需要覆盖的时候,只需要在子类中用override 指示字重新声明一下就可以了。
procedure Draw; override;
3.virtual 虚类型
dynamic 动态
overload 重载
override 重写
4.★★★关于方法定义关键字的说明:
如果在过程定义声明时包括了的关键字的含义:
static 表示是静态方法;静态方法是方法的缺省类型,不能被覆盖;
virtual 表示是虚拟方法;
dynamic 表示是动态方法;
这两类方法的共同点是都可以被覆盖(override),区别仅在于运行时调用方法时的派发机
制,virtual方法为执行速度做了优化,而dynamic方法则为代码大小做了优化;经常被覆盖的
方法应该定义为virtual方法;
message 表示是消息处理方法;在关键字message后面的值指明了这个方法要响应的消息;
用消息处理方法来响应Windows的消息,这样就不用直接来调用它;
override 表示是覆盖方法;要求祖先类中必须有该方法的定义,并且参数的顺序和类型
及返值的类型必须匹配;用于扩展祖先类中的该方法而不是取代它(如不调用祖先类中的该方
法则等同于取代);
overload 表示是重载方法;用于一个类中有许多同名的方法带着不同的参数表的情形;
(属性的读写方法不能被重载);
abstract 表示是抽象方法;是没有实现的方法,并且必须是virtual或dynamic方法,即
在abstract前面必须有virtual或dynamic关键字,其实现部分在派生类中;如
procedure DoSomething; virtual; abstract;
reintroduce表示是重新声明的方法;用于方法的名称与祖先类中的某个方法名称相同的情形;
5.virtual 和 dynamic定义的虚函数,都是为了子类override用的,
只不过它们的实现不一样
vitrual 占用的空间大点,但速度快些。dynamci正好相反.
stdcall是一种调用方式,标明了参数入stack的顺序和清除的方式,具体可看
Delphi的帮助.
- Delphi的OverRide、OverLoad和Virtual方法
- Delphi的OverRide、OverLoad和Virtual方法
- Delphi的OverRide、OverLoad和Virtual方法
- Delphi的OverRide、OverLoad和Virtual方法
- Delphi的OverRide、OverLoad和Virtual方法
- delphi的override、overload和virtual方法
- Delphi的OverRide、OverLoad、Virtual、Dynamic、Static方法
- Overload和Override的区别及Overload的方法分析
- Delphi中override和overload的定义和区别是什么?
- C++ 和 Delphi 的函数覆盖(Override)与重载(overload)
- C++ 和 Delphi 的函数覆盖(Override)与重载(overload)
- C++ 和 Delphi 的函数覆盖(Override)与重载(overload
- override/overload/virtual
- override overload reintroduce的区别(delphi)
- overload和override的区别
- Overload和Override的区别
- Overload和Override的区别
- Overload和Override的区别
- [MongoDB指导3]MongoDB基本操作教程
- 一个功能增强的记事本_VB.NET
- FAQ_05_查看 android 设备 ip
- MFC中处理消息的顺序
- [MongoDB官方指导5]Mongo交互Shell
- Delphi的OverRide、OverLoad和Virtual方法
- opencv 从摄像头读取检测直线(霍夫变化)
- Virtual Box 虚拟机安装Android
- 职业规划就像软件工程(以后想成为码农的可以看看)
- 纪念来帝都两周年
- log4j动态确定日志文件
- c经典面试试题<一>
- VC ADO "IDispatch error #3092"
- C经典面试试题二