问题太多,不说不快!
谢谢!原谅我的愚昧!1、类中成员可见性声明的顺序是否必须是:private,protected,public,published?(因为我发现把published写在最前面结果编译通不过)2、构造函数和析构函数如果要覆盖基类的,是否一定要写在published中?3、DELPHI的书中有个“方法名的再引入”的知识点,说明了Reintroduce关键字的用法,我还是不太明白具体的用法?4、Inherit关键字一般在什么时候使用?5、property中,read或write的成员中如果使用procedure,是否参数名必须是value?…………
命苦啊!买了好几本书都没讲明白这些问题。
拜托大家了!

解决方案 »

  1.   

    1)没有 必要。Borland提供得Delphi得语法图上也是这样,顺序是任意得。
    2)不用,依旧写在public中好了。方法写在published中,几乎没有任何用处。
    3)就是不让编译器产生一个Warning而已,如果你不在乎Warning,不用也罢。
    4)调用基类得方法时就用,相当于Java得super,或者C#中得base
    5)可以不是Value,不过大家都是Value,你Value一下也没有什么过错吧
      

  2.   

    3)就是不让编译器产生一个Warning而已,如果你不在乎Warning,不用也罢。   难道他们在语言里加一个关键字就为这个么?我一直也很疑惑。
      

  3.   

    1.顺序是不固定的!不过published是要公布属性的。你要是在前面没有声明这个属性就公布的话肯定是会出问题的!
    2.构造函数和析构函数一般是写在public里面的。
    3.方法的重引入是在:父类的方法为虚拟的或动态的,而在子类中重载一个与它同名的静态方法时就必须在OverLoad关键字前使用Reintroduce关键字指明重新引入该方法的!
    例如:
    type
      Ta1=class
      public
        function a():string;virtual;
      end;
      Ta2=class(Ta1)
      public
        function a():string;reintroduce;overload;
      end;
    4.inherted一般用在当子类隐藏了父类的方法而又要在子类中调用父类方法的时候;
    例如:
    type
      Ta1=class
      public
        function a():string;
      end;  Ta2=class(Ta1)
      public
        function a():string;
      end;
    像这种情况想在Ta2类中的a方法里调用父类方法的a方法时候就要用到inherted了。5.参数名不一定要是value的,只要这个参数的类型和属性名的类型一致就可以了!!