Delphi 中的自定义类笔记
来源:互联网 发布:uefi双硬盘安装ubuntu 编辑:程序博客网 时间:2024/06/05 17:12
Delphi 中的自定义类笔记
类的声明
有两种声明办法
一、自定义类的父类delphi内建类
type 类名 = class(父类)
end;
(1)保留字Class说明该类是dephi内建类,将继承父类的属性和方法
(2)“父类”默认是delphi的祖先类Tobject
二、完全自定义的类
Type 类名 = object(父类)
End;
(1)
(2)
注意:用class自定义的类必须遵循delphi内建类的Tobject的特定的构造方法和析构方法,而用object自定义类的方法无此限制(内存管理方式),所以用第一种方法生成对象时必须调用Create构造函数,
第二种就不需要,可直接生成对象,它将做为一般变量,和记录(Record)变量相同,用到
时立即分配内存,用完时自动释放内存
自定义Delphi内建类的构造和析构
构造函数
Constructor Create(AOwner :Tcomponent) ;override ;
(1)可以根据实际情况改变参数信息(参数个类,类型,顺序,默认值)
(2)若要继承父类的构造函数,可添加inherited create;
析构函数
Destructor destroy ; override ;
(1)
(2)
(3)
用Free可解决上面的问题(真正释放内存;在没有创建的对象的情况下调用Free也不会报错)
还有一个更实用的FreeAndNIl(对象),它不仅释放内存,而且将对象的参考(变量)赋nil值
完全自定义类的构造和析构
自定类也完全可以自己编码自己的构造和析构函数,为其分配内存、释放内存,不免要用到指针,是复杂度很高的工程,此时还是用的自定义的Class比较方便。
类的封装
封装的含义:把个别单元(对象和类)的所有数据和功能(成员变量、成员函数、属性)全部包括它的内部。
封装的目的:防止外界去破坏对象内部结构和数据。只有通过对象对外的接口,才能访问对象内部的数据,对象之间也无法直接访问彼此的数据,必须通过某些信息的传递,而这些信息对调用、执行对象内部的方法,或访问对象内部的属性或字段。
封装的方式:delphi中用类(Class)的声明技术。接口部分(interface)用来定义对象外观及对象对外表现的行为,而实现部分(implementation)则用来处理对象内部运行,其内容包括不公开的字段
ObjectPascal封装的级别
五个级别
Private
(1)这里声明的类成员(包括字段、方法(类方法))只能在类声明的单元内使用。
(2)子类可以继续父类的private成员,但无法使用这些成员
该部分声明的方法为类方法,也就是说对象无法直接调用
Protected
(1)这里声明的类成员(包括字段、方法(类方法))只能在类声明的单元内使用
(2)子类可以继承父类的protected成员,也可以使用,但也只限于类定义的单元
该部分声明的方法同样为类方法,类的对象也无法直接调用
Public
(1)这里声明的类成员(包括字段、方法(对象方法))可见度最大,可以在类单元及类对象所在的任何单元使用。
Published
(1)
(2)
RTTI(Run time type Information)是为Published制作它允许应用程序动态查询该类的published的字段、属性(包括属性和事件),并且加载类的方法
RTTI启动条件是有条件的——使“{$M+}”编译指令的状态下才能启动RTTI或它的祖先类以上述状态编译,也可以启动RTTI,然后该类检查器才能显示在检查器中。
(3)
A. 序数、字符串(string)、class、interface以及mothod—pointer类,都可以做published的属性
B. 范围在0-31之间的集合,该集合值必须满足byte、word或double word类才能做published属性
C. 除了Real类外的所有实数类,都可以做为published属性
D.数组类不可以做published属性
E. 所有的成员函数都可以作为published的事件,然而重载override的函数不可以作为published事件
F. 字段Fieled不能作为Published的属性,除非它属于class或interface类
Automated
(1)
(2)
开头不加保留字的类成员
这里讲的开头不加保留的类成员两种情况
一、
二、
A. 该类或你类使用了“{$M+}”编译指令的情况下,默认为published成员
B. 该类或你类未使用“{$M+}”编译指令的情况下,默认为public成员
成员封闭等级的变更法则
变更方法:只需要在子类成员的声明区重新声明即可
遵循法则:可扩大该成员的可见度,但不要缩小成员的可见度。
因为缩小某些成员可见度使某些成员可见度降低,有可能困这些成员无法访问而导致编译错误
类成员的定义和实现
类成员
字段、方法、属性
字段与对象引用的实现
字段:指狭义上的字段——指对象还拥有的成员变量。
(1)
(2)
(3)
倘若成员变量属于class类,则此种情况我们称该成员变量为“对象引用”
方法
(1)
属性
与字段的区别;
(1)
(2)
转自:http://blog.sina.com.cn/s/blog_3fed3a390102dvpn.html
- Delphi 中的自定义类笔记
- Delphi 中的自定义类笔记
- Delphi 中的自定义类笔记(一)
- Delphi 中的自定义类笔记(一)
- Delphi自定义类笔记(二)
- Delphi自定义类笔记(二)
- Delphi自定义类
- Delphi 自定义窗体类名
- Delphi中的线程类
- Delphi中的线程类
- Delphi中的线程类
- Delphi中的线程类
- Delphi中的线程类
- Delphi中的容器类
- Delphi中的容器类
- Delphi中的线程类
- Delphi中的线程类
- Delphi中的线程类
- Spring MVC "The request sent by the client was syntactically incorrect ()"解决办法
- jsp面试基础速成精华讲解
- Zend Framework 入门——错误处理
- java JList 添加数据后,如何更新啊
- Boost.smart_ptr.shared_ptr--2
- Delphi 中的自定义类笔记
- 经典Sql面试题收集!!
- 文件选择对话框filedialog,OpenFileDialog,FolderBrowserDialog
- 关于Excel导入的问题记录
- Java 中的堆和栈
- 嵌套For循环性能优化案例
- jsp生成的java在work目录下
- 移动项目必知必会——打包ipa时的真机尺寸
- JAVA基础篇之枚举