C Cash_HYJ Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-25 #6 sun77wind,我已经试过啦,而且还试过其他很多方法,都不成,才来向你们请教。
C Cash_HYJ Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-25 #8 因为我想用子类中用自己内部的某个属性或者事件来代替父类中相应的,因此想把它屏蔽掉,不想让用户看到。
A Adnil Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-25 #9 如果是从delphi的一些固有类继承的话,则可以做到,Delphi通常都提供了TCustomXXX 对象,可以从它来创建子类并重新公开Published属性。
A Adnil Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-25 #10 如果是从delphi的一些固有类继承的话,则可以做到,Delphi通常都提供了TCustomXXX 对象,可以从它来创建子类并重新公开Published属性。
B blueboy Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-25 #11 覆盖! 直接定义同名同参数东东把它覆盖掉! 我们曾经继承过TDatabase,覆盖它的Params,让外部程序不能访问password,但在新类内 部却可以对原类的Params读写不误。
C Cash_HYJ Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-26 #12 blueboy, 覆盖这个方法我也试过,但不成。能否说说你的具体做法?
C Cash_HYJ Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-26 #13 Adnil, 你这个方法我也想过,不过我觉得笨了一点,而且实际上变成了从父类的父类继承啦。
C Cash_HYJ Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-26 #14 []诸位,我觉得继承存在这样的规则:对于父类,其成员的开放性只能增加或者保持,而不能减小。 你们认为呢?
C Cash_HYJ Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-26 #15 blueboy, 你所说的覆盖是不是在published区重新定义Property,但只保留Read属性,而把Write属性去掉? 如果是这样的话,用户是用不了这个成员,而且在IDE也看不到,但在代码里预示方法(用.点方法)还是可以 看到这个类成员啊!
blueboy, 你所说的覆盖是不是在published区重新定义Property,但只保留Read属性,而把Write属性去掉? 如果是这样的话,用户是用不了这个成员,而且在IDE也看不到,但在代码里预示方法(用.点方法)还是可以 看到这个类成员啊!
A Adnil Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-26 #16 Delphi没有C++概念中的私有继承,因此这个很难实现,还是使用borland推荐的从TCustomXXX开始吧。
B blueboy Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-26 #17 type TNewDatabase=Class(TDatabase) Private FNull: TStrings; protected Public Constructor Create(AOwner: TComponent);override; Published Property Params: TStrings Read FNull; ...... Constructor TNewDatabase.Create(AOwner: TComponent); begin Inherited; FNull:=nil; end; 这样做后他读回的就是nil啊。
type TNewDatabase=Class(TDatabase) Private FNull: TStrings; protected Public Constructor Create(AOwner: TComponent);override; Published Property Params: TStrings Read FNull; ...... Constructor TNewDatabase.Create(AOwner: TComponent); begin Inherited; FNull:=nil; end; 这样做后他读回的就是nil啊。
M marknew Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-26 #18 从OO的角度出发,这是无法做到的,也没有那个必要的。
C Cash_HYJ Unregistered / Unconfirmed GUEST, unregistred user! 2002-03-26 #19 承蒙blueboy和Adnil两位仁兄指导,我把分数平分给与你们啦,请别见怪!