Published
在Published部分声明的成员,其可见性与在Public部分声明的成员的可见性是一样的,它们都是
公共的,所谓公共的就是说这些成员可以被其它类的实例引用,Published和Public的区别在于成员的
运行期类型信息不同,delphi的元件库VCL正是通过运行期类型信息来访问元件的属性值的,此外Delphi
.的IDE还通过运行期类型信息决定Object Inspector中的属性列表。
注意:只有当编译开关$M的状态为{$M+}时或者基类是用{$M+}编译的时,类的声明中才能有Publish-
ed部分,换句话说,编译开关$M用于控制运行期类型信息的生成。
在Published部分声明的成员一般是属性,不过也可以声明字段,Object Pascal规定, 在Published
部分声明的字段只能是类类型的,如果是其它类型的字段中只能在Public、Protected或Private部分声
明。在Published部分声明的属性不能是数组属性,另外属性的数据类型只能是有序类型、部分实型
(single,Double,Extended,Comp)、字符串类型、小集合类型、类类型或者方法指针类型,其中小集合
类型是指集合的基类型的上下界序号在0到15之间的集合。
Public
在public声明的成员是公共的,也就是说,它们虽然是在某个类中声明的。但类的实例也可以引用,
相当于C语言中的外部变量,例如,假设应用程序由两个Form构成,相应的单元是Unit1和Unit2,您希望
Unit2能共享Unit1的整型变量count,你可以把count在TForm1类中的Public部分声明,然后把Unit1加到
unit2的interface部分就可以了。
注意:面向对象的编程思想其特征之一就是隐藏复杂性,除非您必须把某个成员在不同类之间共享,
一般来说尽量不要把成员声明在类的Public部分,以防止程序意外地不正确地修改了数据。