类就是角色,一个对象实例可能有多重角色。
类的核心是属性(数据/状态),区别不同类的正是类(私有)数据,否则没必要搞多个类,层次过重没有好处。
对象是类的实例。
<class name> = Class(<parent class name>)
。。。
end;
类声明中先声明数据成员,再声明类方法。
类方法中有2类特殊方法。
构造函数:在类实例创建时被执行。
形如 constructor Create(变量列表);
构造函数可以重载(overload),即可以有多个构造函数(不同的变量列表)。
析构函数:在类实例销毁时被执行。
destructor Destory(); //不可以再传变量进去了
析构函数可以重写,因为一个继承(inherience)的原因,特定的析构函数有时难免要被子类改写(override)。
继承父类的析构函数: inherited Destroy(); //放在析构函数的最后
除了包括普通的数据成员,类还有属性,允许外界以简单的方式对(普通的)数据成员进行读写操作。
property <Prop>: <type> read <read func> write <write func> default <default value>;
<Prop> := <value>;
但对于复杂的数据成员,属性有点力有不逮了。
类成员的可见性
private,
protected
public
published
子类可以增强父类成员的可见性,但不能降低其可见性。
一个类只有一个虚拟表,改类的所有对象都会通过这个虚拟表调用虚方法。
当某个类的对象创建时,编译器会为这个对象制定所属类的虚拟表或虚函数表(VMT)。虚拟表的地址存在对象地址内容的前4个字节中。
每个子类的虚函数表会完全继承父类的虚函数表(的实现),只是将覆盖的虚函数的地址改变了。VMT中的虚函数非常齐全,对每个虚函数入口的地址只需简单的VPTR+n操作就可得到。
除了VMT还有,DMT(动态函数表),实现的功能和VMT一样,只是VMT时间效率高,DMT空间效率高。
和静态方法相比,虚方法(方法后跟 virtual)意味着其地址在编译时是不固定的,而是在程序运行时通过动态查找而指定(如何查找?),又叫动态绑定或滞后绑定。
多态,其实就是为了增强处理数据的灵活性。通过基类指针或引用指向子类的对象,调用其虚方法实现的。
类运算符 as 像强制类型转换,只可向上。
is 判断是不是一个类或其子类的对象实例。
分享到:
相关推荐
Winsoft PDFium Component Suite v6.6 for Delphi & CB 5-11.2 Alexandria Full Source 已打包成安装包,双击可直接安装到Delphi中,并设置上Lib路径。
Download Winsoft ComPort v6.3 for Delphi & C++ Builder 5 - 10.4 Sydney FULL SOURCE Cb5 Example DEMO.BPR 2.60KB demo.cpp 0.64KB DEMO.res 0.86KB udemo.cpp 6.73KB udemo.dfm 4.29KB udemo.h 2.99KB ...
最新版本: TMS FNC UI Pack v5.0.1.3 (28 Mar 2023) for Delphi & CB XE7-D11 Alexandria Full Source 内附安装说明! 你懂的!
PDFium Component Suite v5.8 是一套专为 Delphi 和 C++ Builder 用户设计的PDF处理组件,支持从 Delphi 5 到 Delphi 10.4 的多个版本。这个工具包提供了强大的功能,使开发者能够轻松地在自己的应用程序中集成PDF...
《使用Delphi与Access开发学生信息管理系统》 在信息技术领域,开发信息管理系统是常见的实践项目,特别是对于教育行业的学生来说,使用Delphi和Access数据库构建学生信息管理系统是一个很好的学习实践。Delphi是一...
Delphi and C++ Builder library for communicating with HID USB devices. uses HIDAPI library supports Windows 32 and Windows 64 available for Delphi/C++ Builder 5 - 10.1 and Lazarus 1.6 source code ...
TMS Component Pack v6.9.3.0 for Delphi & C++Builder 5-XE4 Full Sources 编译安装时要注意顺序。tmsdedXE4包的编译安装要放在tmsexdXE4包的编译安装之后,不然会有报错提示。 相关DEMO可以查的我的资源中:TMS ...
在IT行业中,跨语言通信是一项常见的任务,而本示例"Delphi&C++&Dll.rar"则演示了如何通过动态链接库(DLL)在Delphi和C++之间实现这种通信。DLL是一种可重用的代码模块,允许多个应用程序共享同一段代码,从而减少...
Component ACE ZipForge v6.95 for Delphi & BCB 4-12 Athens Full Source.7z
Winsoft WebView v6.6 for Delphi & CB 5-11.3 Alexandria Full Source.rar
delphi & C++Builder RAD XE7 安装破解包
TMS Component Pack for Delphi & C++Builder includes feature-packed grids, Office 2007 ribbon, Office 2003 style toolbar, planning/scheduling components, advanced edits, toolbars, internet auto ...
找了一个晚上,终于把 TMS Component Pack 6.1.4.1 for Delphi & C++Builder 5-XE2 Full Source 这个东东下了下来,为了用xe2 下了不少功夫哦
TMS Component Pack 5.5.2.0 for Delphi & C++Builder 5-2010 Full Source Create modern-looking & feature-rich Windows applications faster with over 300 components in one money and time saving bundle. ...
TMS Component Pack 6.3.2.0 for Delphi & C++Builder 5-XE2 Full Source
TeeChart Pro VCL 2012.05.120327 for Delphi & C++Builder 5-XE2.7z
除了发布与Delphi进行的研究相伴随的技巧和文章外,我们还发布了Delphi&Pascal开源环境,组件和代码,以使更广泛的Delphi&Pascal爱好者参与我们的工作并逐步为基础,并最终目标是帮助加速Delphi&Pascal发展,造福...
TMS Component Pack 6.3.2.0 for Delphi & C++Builder 5-XE2 Full Source.7z
Delphi 的扩展编程工具,采用 Turbo Assembler 5.0 编写,支持 Delphi 2/3/4/5,能够将 Delphi 编写的 Console Application (控制台应用程序)转换为...
Download Winsoft ComPort v6.6 for Delphi & C++ Builder 5 - 11 FULL SOURCE Cb5 Example DEMO.BPR 1.00KB demo.cpp 1.00KB DEMO.res 0.86KB udemo.cpp 9.00KB udemo.dfm 8.00KB udemo.h 9.00KB ...