delphi2006语言新特性——类静态字段、类属性(转)

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;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值