1。unit Unit3;interface
uses
 Classes;
 type
  TIUserMaint = class (TObject)
  public
    function GetuserList:OLEVariant;virtual;abstract;
    constructor create;virtual;abstract;
    end;
  TIUserMaintClass=class of TIUserMaint;
implementationend.
这里有一行。TIUserMaintClass=class of TIUserMaint;
这句是什么意思啊,大概的意思是,定义一个类,类型为TIUserMaint;
但这有什么作用和意义呢,TIUserMaintClass和TIUserMaint;有什么区别呢。
与TIUserMaintClass=CLASS(TIUserMaint)又有什么区别呢。2。属性可能我们每个都知道,但属性从那里来,他和变量有什么实际的区别,他怎么用啊。我们定义了,可是我看到DELPHI中的类里的属性,也就是他自己的VCL,属性只是定义,为什么没有用这些属性,还是看不到用这些属性,被编译透明了。

解决方案 »

  1.   

    属性从那里来?在forms单元中:
      TForm = class(TCustomForm)
      public
        procedure ArrangeIcons;
        procedure Cascade;
        procedure Next;
        procedure Previous;
        procedure Tile;
        property ActiveMDIChild;
        property ClientHandle;
        property DockManager;
        property MDIChildCount;
        property MDIChildren;
        property TileMode;
    ...
        property WindowState: TWindowState read FWindowState write SetWindowState
    ..
      

  2.   

    TIUserMaintClass=class of TIUserMaint
    定义TIUserMaintClass为TIUserMaint类的元类类型!
    就像TFormClass = Class of TForm。
      

  3.   

    TIUserMaintClass元类也即类的类型,就像对象是类实例一样,你可以理解为类是元类的实例。
    如果这么写的话:
    TIUserMaintClass=CLASS(TIUserMaint)
    就定义了一个TIUserMaint的派生类TIUserMaintClass。
      

  4.   

    属性的定义是为了封装,你要访问类的私有成员变量时就可以使用属性来访问,属性一般是声明在Published区域的!
      

  5.   

    1.是一个类引用,更TIUserMaintClass=CLASS(TIUserMaint)是不一样的。
    2.属性是用property 来定义的。修改属性可以触发某些事件。根据属性值显示结果
      

  6.   

    1.TIUserMaintClass=Class of TIUserMaint 也是定义了一个类型,是一个类的类或者叫类模板有的书上也叫元类。它和一般的类不用在于普通类的实例是个对象而它的实例还是个类。当你需要一个类而不是对象做为参数时它就很有意义了。 
    2.属性就是一个方法,它可以是对一个私有变量的操作。用属性的好处是封装性更好,更容易扩展。合理利用它是个很好的习惯。
      这些东西我理解也很肤浅:),不过经常用到。
      

  7.   

    最好看object pascal的面向对象的书去
      

  8.   

    1.是一个类引用,更TIUserMaintClass=CLASS(TIUserMaint)是不一样的。
    2.属性是用property 来定义的。修改属性可以触发某些事件。根据属性值显示结果