Delphi 系统[20]关键字和保留字 automated、private、protected、public、published - 定义类(或结构、对象)成员的可访问类型
Delphi 系统[20]关键字和保留字 automated、private、protected、public、published - 定义类(或结构、对象)成员的可访问类型
1、定义:
- automated :自动成员,它能够使程序的版本向下兼容。ComObj 单元内的成员及其实例不能使用 automated 访问区分符。 不能用于结构类型和对象类型。
- private :私有成员,只有类所在单元可以访问。
- protected :保护成员,只有子类可以访问,不能用于结构类型。
- public :公开成员,可以在任何地方被访问。
- published :发布成员,可以在运行时被访问,不能用于结构类型和对象类型。
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 29 30 | type TMyObject = class automated { 这里放置自动类型的成员 } private { 这里放置私有类型的成员 } protected { 这里放置保护类型的成员 } public { 这里放置公开类型的成员 } published { 这里放置发布类型的成员 } end ; { 关于 automated } type TMyObject = class automated Str: WideString ; end ; { 如果在程序的下一个版本中, 将 Str 修改成 } type TMyObject = class automated Str: AnsiString ; end ; { 则新版本的 Str 变量能够接受旧版本的 WideString 型数据,并自动转换成AnsiString。 在实际开发中,如果没有特殊的需要,一般不用 automated 访问区分符。} |
3、关于automated 成员的一些说明:
- automated 成员与public成员具有相同的可见性。区别在于,automated 类型信息(自动化服务器所需)是为 automated成员生成的。
- automated 成员通常只出现在Windows类中,不建议用于Linux编程。automated 保留字是为了向后兼容而保留的。ComObj单元中的TAutoObject类不使用automated。
- 以下限制适用于声明为 automated的方法和属性:automated 方法或属性的声明可以包含dispid指令。在dispid指令中指定已使用的ID会导致错误。
- 所有属性、数组属性参数、方法参数和函数结果的类型都必须是自动的。可自动执行的类型有Byte, Currency, Real, Double, Longint, Integer, Single, Smallint, AnsiString, WideString, TDateTime, Variant, OleVariant, WordBool,和所有 interface 接口类型。
- 方法声明必须使用默认的寄存器调用约定。它们可以是虚拟的,但不是动态的。
- 属性声明可以包括访问说明符(读和写),但不允许使用其他说明符(index索引、stored存储、default默认和nodefault)。访问说明符必须列出使用默认寄存器调用约定的方法标识符;不允许使用字段标识符。
- 属性声明必须指定类型。不允许属性重写。
- 在Windows上,此指令后面必须跟一个整数常量,该常量指定成员的自动分派ID。否则,编译器会自动为成员分配一个调度ID,该ID比类及其祖先中任何方法或属性使用的最大调度ID大一个。有关 Automation自动化的详细信息(仅在Windows上),请参见Automation自动化对象。
创建时间: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)