Delphi 2006语言新特性

本文通过具体的Pascal代码示例,介绍了记录类型、类和对象的概念及其应用。详细讲解了构造函数、属性、类属性等面向对象编程特性,并演示了如何在程序中使用这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

type
  //非引用,可直接赋值,Record不可继承,Object可继承
  TRecord = record{object}
  const
    //定义了常量后影响Ctrl+Shift+C自动完成
    TA: Integer = 0;
    Length: Integer = 3;
  private
    FA: Integer;
    FB: Integer;
    procedure SetA(const Value: Integer);
  class var
    FD: TList;
  public
    constructor Create(A, B: Integer);//构造函数必须至少有一个参数,析构函数需要自定义
    procedure Add(v: Integer);
    property A: Integer read FA write SetA;
  end;

  //在仅有常量和类变量时用做单例模式应该不错
  TClass = class sealed{sealed | abstract}
  const
    A: Byte = 100;//类常量,可以不定义类型
    B: Boolean = True;//类常量,也可以定义类型
  class var
    //类变量,相当于静态变量,访问时 类名.变量名
    FT: Integer;
  //strict 
  private//严格的OO,即在同一个Unit中也不能访问私有和保护成员了
    FP: Integer;
    class procedure SetT(const Value: Integer); static;
    procedure SetPT(const Value: Integer);
  public
    constructor Create(C: Integer);//类构造函数参数可有可无
    //下面是类属性,只能读写类变量,读写方法必须是类静态方法,即前面加class,后面加static
    class property VT: Integer read FT write SetT;
    //注:使用类属性时最好不使用一般属性,否则无法Ctrl+Shift+C自动完成
    property PT: Integer read FP write SetPT;//一般属性,只能读一般成员
  end;


测试代码:


procedure TForm1.btn1Click(Sender: TObject);
var
  O: ^TRecord;
  C: TRecord;
  好: string;//中文变更名
  TL: TList;
  P: Pointer;
  T: TClass;
begin
  o := nil;
  New(o);
  o.A := 100;
  TRecord.FD := TList.create;
  好 := '你妹';

    Caption := Format('SizeOf:%d, Length: %d, O^.A: %d 好%s', [SizeOf(TRecord), O.Length, o.a, 好]);
    Dispose(O);
    C.A := 100;  

  TL := TList.Create;
  TL.Add(Pointer(100));
  TL.Add(Pointer(200));
  TL.Add(Pointer(300));
  TL.Add(Pointer(400));

  //for in 支持数组和TList(含GetEnumerator)
  for P in TL do
  begin
    mmo1.Lines.Add(IntToHex(Integer(P), 8));
  end;
  
   T := TClass.Create;//(5);
   T.VT := 8;
   Dec(T.FT);
   Inc(T.VT);
   T.PT := 1;
   //Inc(T.PT);
   T.PT := T.PT - 1;

   if TClass.B then
   mmo1.Lines.Add(Format('%d %d %d', [TClass.A, TClass.VT, T.VT]));

end;

{ TRecord }
constructor TRecord.Create(A, B: Integer);
begin
  FA := A;
  FB := B;
end;  

procedure TRecord.SetA(const Value: Integer);
begin

end;  

procedure TRecord.Add(v: Integer);
begin

end;

{ TC }

constructor TClass.Create(C: Integer);
begin
  FT := C;
end;

class procedure TClass.SetT(const Value: Integer);
begin
  FT := FT + Value;
end;

procedure TClass.SetPT(const Value: Integer);
begin
  FT := Value;
end;  



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值