见到有人这样写,有什么意义吗?只是为了说明它是一个抽象类?TABC = class abstract

解决方案 »

  1.   

    没有这样声明的,但有:
      TXXX=class
             procedure ABC();virtual;abstract;
             procedure D();
           end;
    这样方法ABC()在TXXX类中得不到实现,但TXXX的其他方法可以调用ABC(),如:
    procedure TXXX.D();
    begin
      ABC();
    end;
    在TXXX的派生类中可以覆盖TXXX.ABC().如:
    TX=class(TXXX)
         procedure ABC();override;
       end;
    procedure TX.ABC();
    begin
      ShowMessage('This is Tx class');
    end;
    这样调用Tx.D()就是一个Message框。
    这种机制可以用来实现基类不知如何实现的方法,并将它留给子类去实现。
      

  2.   

    有时候一些方法在基类不知道怎么写的时,那么基类就只给出定义,实现部分让子类去完成
    那么就定义成abstract抽象方法了,这就是多态的思想之一TABC = class abstract
    这个写法是错误的,是不是其它版本可以这么写就不知道了,D7是不行的若类中包含了抽象方法,那么这个类就是抽象类了
      

  3.   

    还有,抽象类不能创建实例。
    你可以参考:http://wenku.baidu.com/view/9328b6492b160b4e767fcf7e.html
      

  4.   

    类申明的标准形式:
    type
       className = class [abstract | sealed] (ancestorClass)
          memberList
       end;即使一个类的成员申明中不包括任何抽象虚拟方法,该类本身也可以加上abstract,即表示该类不能被直接实例化,只有它的子类才能被实例化。