类就是角色,一个对象实例可能有多重角色。
类的核心是属性(数据/状态),区别不同类的正是类(私有)数据,否则没必要搞多个类,层次过重没有好处。
对象是类的实例。
<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 ...
PDFium Component Suite v5.8 是一套专为 Delphi 和 C++ Builder 用户设计的PDF处理组件,支持从 Delphi 5 到 Delphi 10.4 的多个版本。这个工具包提供了强大的功能,使开发者能够轻松地在自己的应用程序中集成PDF...
《使用Delphi与Access开发学生信息管理系统》 在信息技术领域,开发信息管理系统是常见的实践项目,特别是对于教育行业的学生来说,使用Delphi和Access数据库构建学生信息管理系统是一个很好的学习实践。Delphi是一...
最新版本: TMS FNC UI Pack v5.0.1.3 (28 Mar 2023) for Delphi & CB XE7-D11 Alexandria Full Source 内附安装说明! 你懂的!
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 安装破解包
Winsoft Barcode Full Source Delphi & CB 5-11.3 合集.7z
Winsoft WinRT v1.5 for Delphi & CB 7-12 Athens Full Source.rar
Winsoft WinRT v1.5 for Delphi & CB 7-12 Athens Full Source.7z
AlphaControls v17.10 Stable (17 Dec 2023) for Delphi & CB 5-12 Athens Support DevExpress v23.2.6.7z
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 下了不少功夫哦
PDFium Component Suite v5.8 for Delphi & C++ Builder 5 - 10.4 Sydney 概览 PDFium Component Suite v5.8 是专为 Delphi 和 C++ Builder 设计的一款强大工具包,支持从Delphi 5到C++ Builder 10.4 Sydney的广泛...
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. ...