Delphi 系统[17]关键字和保留字 class -类
Delphi 系统[17]关键字和保留字 class -类
1、定义:
- class:定义类的类型,或声明一个类方法。
- 类型必须先声明并给定名称,然后才能实例化(不能在变量声明中定义类类型。)仅在程序或单元的最外层范围内声明类,而不是在过程或函数声明中声明类。
2、示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | { 定义空类,默认继承自TObject } type TMyObject = class end ; { 定义 TMyObject 类并测试类方法 } type TMyObject = class (TObject) private FName: string ; protected public class procedure ShowResult; { 定义类方法,类方法可以直接通过类调用 } published property Name: string read FName write FName; end ; { 实现类方法 } class procedure TMyObject . ShowResult; begin ShowMessage( '调用成功!' ); end ; { 调用类方法 } procedure TForm1 . Button1Click(Sender: TObject); begin TMyObject . ShowResult; { 直接通过 TMyClass 调用,不用创建实例 } end ; |
3、关于类的其他说明:
1 2 3 | type className = class (ancestorClass) memberList end ; |
- 其中className是任何有效标识符,(ancestorClass)是可选的,memberList声明类的成员,即字段、方法和属性。
- 如果省略(ancestorClass),则新类将直接从预定义的ToObject类继承。如果包含(ancestorClass)且memberList为空,则可以忽略end。
- 类的类型声明还可以包括由该类实现的接口列表;请参阅实现接口。
- 方法在类声明中显示为函数或过程标题,没有正文。为每个方法定义声明发生在程序的其他地方。
例如,下面是来自Classes单元的TMemoryStream类的声明:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | type TMemoryStream = class (TCustomMemoryStream) private FCapacity: Longint ; procedure SetCapacity(NewCapacity: Longint ); protected function Realloc( var NewCapacity: Longint ): Pointer ; virtual; property Capacity: Longint read FCapacity write SetCapacity; public destructor Destroy; override; procedure Clear; procedure LoadFromStream(Stream: TStream); procedure LoadFromFile( const FileName: string ); procedure SetSize(NewSize: Longint ); override; function Write ( const Buffer; Count: Longint ): Longint ; override; end ; |
- TMemoryStream从TStream(在类单元中)派生,继承其大多数成员。
- 但是它定义了--或者重新定义了--几个方法和属性,包括它的析构函数方法 Destroy。
- 它的构造函数Create是从TObject继承而来的,因此不会重新声明。
- 每个成员声明为 private, protected, 或者 public (此类没有 published 的成员);有关这些术语的解释,请参见类成员的可见性。
根据此声明,您可以按如下方式创建TMemoryStream的实例:
1 2 3 4 5 | var stream: TMemoryStream; begin stream := TMemoryStream . Create; end ; |
4、关于 类方法 的其他说明:
类方法是对类而不是对象进行操作的方法(构造函数除外)。类方法的定义必须以保留字类开始。例如:
1 2 3 4 5 6 7 | type TFigure = class public class function Supports(Operation: string ): Boolean ; virtual; class procedure GetInfo( var Info: TFigureInfo); virtual; ... end ; |
类方法的定义声明也必须以类开头。例如:
1 2 3 4 | class procedure TFigure . GetInfo( var Info: TFigureInfo); begin ... end ; |
- 在类方法的定义声明中,标识符自身表示调用该方法的类(可以是定义该方法的类的后代)。
- 如果在类C中调用该方法,则Self属于类C的类型。因此,不能使用Self访问字段、属性和普通(对象)方法,但可以使用它调用构造函数和其他类方法。
- 类方法可以通过类引用或对象引用调用。
- 当通过对象引用调用它时,对象的类成为Self的值。
创建时间:2021.08.12 更新时间:
博客园 滔Roy https://www.cnblogs.com/guorongtao 希望内容对你有所帮助,谢谢!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
2020-08-12 Delphi XE10 错误提示:security alert vmware
2019-08-12 [原创]Delphi 字符串函数(字符串判断 TryStrToFloat 、TryStrToInt、TryStrToInt64、TryStrToBool、TryStrToCurr、TryStrToDate、TryStrToTime、TryStrToDateTime)