[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;