delphi 面向对象的抽象方法的作用;如果不定义抽象方法会怎样呢?
还请说下 class of .. 类的类 的用法希望可以举个小列说明  谢谢大侠

解决方案 »

  1.   

    抽象方法,只有定义,而没实现的方法为抽象方法,有点类似模版,用不用都没多大问题class of就是定义类的别名.在<delphi7中文官方文档>有提到
      

  2.   

    Delphi--抽象方法、重载、覆盖。继承实例http://download.csdn.net/download/miaojun_25/1014042这个资源好像不错
      

  3.   

    可以看看TStrings类的GetCount,它就是一个抽象方法,它在类TStrings中的很多其它方法中都被调用到。
    而子类TStringList覆盖了GetCount,其他用到了GetCount的方法都会调子类的GetCount。
    如果TStrings类没有GetCount,那么凡是用到了GetCount的方法都要被子类所覆盖!!!另一方面,抽象方法也在父类级别为所有子类提供了对外的“接口”。
    比如TStrings类的Insert,如下代码:
    var
      s: TStrings;
    begin
      s := TStringList.Create;
      s.Insert(0, 'abc');//如果TStrings没有Insert,这里是连编译都通不过的!!!
      s.Free;
    end;
      

  4.   

    关于class of,其实可以把他看作一个数据类型,就像Integer一样,只不过他是类的类型。声明一个此类型的变量,可以将类赋值给变量。
    procedure TForm1.FormCreate(Sender: TObject);
    type
      TStringListClass = class of TStringList;
    var
      c: TStringListClass;
      o: TStringList;
    begin
      c := TStringList;
      o := c.Create;
      o.Add('abc');
      o.Free;
    end;
      

  5.   

    非常感谢 s11ss(skull)
    还是没弄明白 calss of....类型的原理;为什么要定义class of 类型呢
    直接定义数据类型就好了啊
      

  6.   

    delphi7里头的一段帮助:
    To see how class-reference types are used, look at the declaration of the constructor for TCollection (in the Classes unit):
    为了了解类引用类型是如何使用的,看看TCollection的构造器的声明(在Classes单元):
    type TCollectionItemClass = class of TCollectionItem;
      ...
    constructor Create(ItemClass: TCollectionItemClass);This declaration says that to create a TCollection instance object, you must pass to the constructor the name of a class descending from TCollectionItem.
    这个声明是说要想创建一个TCollection的实例对象,你必须把派生于TCollectionItem的一个类的名字传递给那个构造器。
    Class-reference types are useful when you want to invoke a class method or virtual constructor on a class or object whose actual type is unknown at compile time.
    类引用类型是有用的,当你想调用一个“类方法”或当你想调用在编译时期实际类型未知的一个类或对象的虚构造器的时候。
      

  7.   


    谢谢 s11ss (skull)
     类的类 class of...运行期确定数据类型 那和 RTTI(运行期数据类型信息) 有关联么呢?  
    还有可以说下 class function 类方法的原理吗?谢谢大家
      

  8.   

    关于8L翻译的纠正,参考
    http://topic.csdn.net/u/20120315/16/08b57a70-49e1-44a7-80db-109da44972a2.html