delphi strict final用途

    xiaoxiao2022-07-04  101

    整理一下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;
    最新回复(0)