本文转自http://hi.baidu.com/homejun/blog/item/3cd2cd1b6c60f4faaf5133d0.html delphi2006语言新特性——类静态字段、类属性 类静态字段 Class Fields (直译应为类字段,为避免混淆,本文统称类静态字段)
类静态字段是类的一种特殊字段,它可以在类没有实例化时访问(普通的实例字段必须在类实例化后才能访问)。类静态字段储存的值可以被所有实例共享。(很有意思,赋一下值,所有类,实例都会改变,感觉很有用) 你可以用关键字class var在类的声明部分定义一个类静态字段块,所有在class var 以后定义的字段都是静态存储的。当遇到以下情况时类静态字段块结束: 1声明另外一个 class var 或var 2声明一个 procedure 或 function (包含class procedures and class functions) 3声明一个 property (包含class properties) 4声明一个 constructor 或 destructor 5可见性范围修饰符(public, private, protected, published, strict private, and strict protected) 例: type TMyClass = class public class var // 定义一个类静态字段块 Red: Integer; Green: Integer; Blue: Integer; var // 结束类静态字段块 InstanceField: Integer; end;
类静态字段 Red, Green,和Blue 能被以下代码存取:
TMyClass.Red := 1; TMyClass.Green := 2; TMyClass.Blue := 3;
类静态字段也可以通过一个类实例存取,如下面的声明:
var myObject: TMyClass;
下面的代码也可以达到同样的效果。
myObject.Red := 1; myObject.Green := 2; myObject.Blue := 3; 类属性 Class Properties 类属性不用实例化就可以存取。类属性的存取必须定义为类方法,或者类静态字段。(看来只不过是编译器的魔术,实际上是用类方法、类静态字段存取的)类属性使用class property 关键字声明。类属性不能published,并且不能有stored 或 default值。 例: type TMyClass = class strict private class var // 定义一个类静态字段块 FRed: Integer; FGreen: Integer; FBlue: Integer; public // 结束类静态字段块 class property Red: Integer read FRed write FRed; class property Green: Integer read FGreen write FGreen; class property Blue: Integer read FBlue write FBlue; end; 你可以用下面的代码存取: TMyClass.Red := 0; TMyClass.Blue := 0; TMyClass.Green := 0;
|
请发表评论