整理一下delphi2007後一些不常用的語法
關鍵字:strict
private域下成員變量或方法加了此修飾符,該類的子類將無法訪問private域下的變量和方法。
TAbstractClass = class abstract
private
FID: string;
strict private //加了strict標記,繼承類無法訪問
FName: string;
public
class var FVar: string;
procedure print(); virtual;
end;
TExtendClass = class (TAbstractClass)
public
procedure print();override;
end;
...
procedure TExtendClass .print;
begin
ShowMessage(FID); //訪問了父類的private
// ShowMessage(FName); //無法訪問FName
end;
關鍵字:sealed
這個是delphi借鑑於C#的語法,類申明時加上了此修飾符,表示該類無法被繼承了。
TSealedClass = class sealed(TAbstractClass)
public
procedure print();override;
end;
//下面的代碼,編譯器通過不了編譯:
TSealedExtendClass = class(TSealedClass) //cannot extend
public
procedure print();override;
end;
關鍵字:final
用於方法的後修飾,表明該方法不能被覆蓋。
TFinalClass = class(TAbstractClass)
public
procedure print(); override; final;
end;
//print方法不能被覆蓋
TFinalExtendClass = class(TFinalClass)
public
// procedure print();override; //cannot override a final method
end;
Class var語法
可修飾於成員變量前,表明該變量由類直接持有,有點類似於類方法class function,類可以直接調用訪問。
這個變量,類不需要實例化就可以調用,並且全局共享該變量。
TAbstractClass = class abstract
private
FID: string;
strict private //加了strict標記,繼承類無法訪問
FName: string;
public
class var FVar: string;
procedure print(); virtual;
end;
...
procedure test1();
begin
TAbstractClass.FVar := 'test';
ShowMessage(TAbstractClass.FVar); //test
end;
procedure test2();
begin
ShowMessage(TAbstractClass.FVar); //test
end;