整理一下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;