zoukankan      html  css  js  c++  java
  • delphi2006语言新特性——类静态字段、类属性

    本文转自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;

  • 相关阅读:
    信息爆炸时代,对待信息的三种方式
    Spring事务管理
    归并排序和快速排序的衍生问题
    Linux之Shell命令
    程序员找工作的干货经验
    css3 Transition动画执行时有可能会出现闪烁的bug
    布尔值
    null, undefined理解
    js文字的无缝滚动(上下)
    vue实现文字上下滚动
  • 原文地址:https://www.cnblogs.com/MaxWoods/p/3131536.html
Copyright © 2011-2022 走看看