理解 Delphi 的类(十一) - 深入类中的方法[5] - 静态方法、类方法、静态类方法

//静态方法是默认的, 如果不是虚方法或纯虚方法, 那它就是一个静态方法.


//类方法就是通过类名就可以访问的方法

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

{类方法示例:}
TMyClass = class(TObject)
  class procedure alert(s: string); {类方法只是比静态方法多了一个 class 指示字}
end;
{
  类方法不能在 private 和 protected 区;
  类方法不能是虚方法;
  类方法只能使用类中的、在对象实例化以前的数据.
}


var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMyClass }
class procedure TMyClass.alert(s: string);
begin
  ShowMessage(s);
end;


{类方法可以直接使用}
procedure TForm1.Button1Click(Sender: TObject);
begin
  TMyClass.alert('万一'); {万一}
end;

{类的对象当然也能使用}
procedure TForm1.Button2Click(Sender: TObject);
var
  MyClass: TMyClass;
begin
  MyClass := TMyClass.Create;
  MyClass.alert('万一');  {万一}
  MyClass.Free;
end;

end.


//静态类方法

{现在的 Delphi 不仅仅有类方法, 同时有: 
  类变量: class var
  类常量: class const
  类类型: class type
  类属性: class property

  静态类方法就是给类属性来调用的, 它可以存在与私有区(private), 
  譬如下面的 SetName 就是一个静态类方法:
}
TMyClass = class(TObject)
  private
    class var FName: string;
    class procedure SetName(const Value: string); static; {静态类方法又多了一个 static 指示字}
  published
  class property Name: string read FName write SetName;
end;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值