delphi类中的属性使用方法|实例
属性
可以把属性看成是能对类中的数据进行修改和执行代码的特殊的辅助域。对于组件来说,属性就是列在Object Inspector 窗口的内容。下面的例子定义了一个有属性的简单对象:
TMyObject=class
private
SomeValue:integer;
Procedure SetValue(a:integer);
Public
Property value:integer read SomeValue write SomeValue;
end;
procedure TMyObject. SetValue(a:integer);
begin
if SomeValue<>a then
SomeValue:=a;
end; TMyObject 是包含下列内容的对象:一个域(被称为SomeValue 的整型数)、一个方法(被称为SetValue 的过程)和一个被称为Value 的属性。SetValue 过程的功能是对SomeValue 域赋值,Value 属性实际上不包含任何数据。Value 是SomeValue 域的辅助域,当想得到Value 中的值时,它就从SomeValue读值;当试图对Value 属性设置值时,Value 就调用SetValue 对SomeValue 设置值。这样做的好处有两个方面:首先,通过一个简单变量就可以使外部代码访问对象的数据,而不需要知道对象的实现细节。
其次,在派生类中可以覆盖诸如SetValue 的方法以实现多态性。
在Object Pascal 中的类实例实际上是指向堆中的类实例数据的32 位指针。当访问对象的域、方法和属性时,编译器会自动产生一些代码来处理这个指针。这时的对象就好像是一个静态变量。所以说,Object Pascal 无法像C++那样在应用程序的数据段中为类分配内存,而只能在堆中分配内存。