南 南腔北调 Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-08 #1 如果有二个类 A,B:B继承自A,A继承自TOBJECT 怎么让一个A的属性P在A内是非private,但B继承后,在B内P是private的 二个在不同的单元
N ndKeler Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-08 #2 我费解。。。。。难道在 父类是 Private的。在子类中就跑到别的地方去了???你的问题应该没说清楚。
B blyb Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-08 #7 属性存储域在private中,而声明都不在private中。 如果是方法,好像没办法,因为B只能使A的方法从private变成非private,而反之不能。
S sunjialong Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-08 #8 在B中定义一个函数,返回值为你要的A的属性,再定义一个属性,把读指向刚才那个函数, 如果需要写入的话,可以再定义一个函数
南 南腔北调 Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-08 #9 啊,那真的是抱歉 我再说一下吧 A,B:B继承自A,A继承自TOBJECT A的属性P在A内是非private,但B继承后,在B内P是private的 Ta=class public p:integer; end; tb=class(ta) private property p:integer; end; 好像是不可能实现的,也好像没这种需求,我的需要是这样的: 我有一个操作数据库的基类(Ta),然后下面继承自他的每个子类(Tb)都要用到一个属性(p) 但这个属性只对他们二个是公开的,再下面就是不能访问了 (在TA内是公布的,TB继承时,变为私有的,因为再下面无须访问到他,也最好不要让下面的访问到他(p),如TC继承自TB时,就无法访问到这个属性(p)) 我本想把这个属性定义在基类中,现在想想,这样好像不好,因为这个属性是到子类才用到的,在父类中就定义有点多余的感觉,不像方法,可以是虚的。。。 我现在也有点糊涂了,还请各位高手不吝赐教! (看来以后晚上回家要恶补《设计模式》)
啊,那真的是抱歉 我再说一下吧 A,B:B继承自A,A继承自TOBJECT A的属性P在A内是非private,但B继承后,在B内P是private的 Ta=class public p:integer; end; tb=class(ta) private property p:integer; end; 好像是不可能实现的,也好像没这种需求,我的需要是这样的: 我有一个操作数据库的基类(Ta),然后下面继承自他的每个子类(Tb)都要用到一个属性(p) 但这个属性只对他们二个是公开的,再下面就是不能访问了 (在TA内是公布的,TB继承时,变为私有的,因为再下面无须访问到他,也最好不要让下面的访问到他(p),如TC继承自TB时,就无法访问到这个属性(p)) 我本想把这个属性定义在基类中,现在想想,这样好像不好,因为这个属性是到子类才用到的,在父类中就定义有点多余的感觉,不像方法,可以是虚的。。。 我现在也有点糊涂了,还请各位高手不吝赐教! (看来以后晚上回家要恶补《设计模式》)
S sunjialong Unregistered / Unconfirmed GUEST, unregistred user! 2004-02-08 #10 Ta=class public p:integer; end; tb=class(ta) private function getp:integer; end; function tb.getp:integer; begin Result:=p; end; 如果是只读只用一个函数就可以了,要想写就麻烦些,可以用一个过程, 这个方法不是直接的,好像应该有直接的方法 看看TEdit类,我认为好像可以借用过来用 或者再定义一个公开属性,把这个属性的地址指向P 或者定义一个公开属性,把这个属性值改为P的地址 这些都是我想的,我也是刚学,多了我也不知道
Ta=class public p:integer; end; tb=class(ta) private function getp:integer; end; function tb.getp:integer; begin Result:=p; end; 如果是只读只用一个函数就可以了,要想写就麻烦些,可以用一个过程, 这个方法不是直接的,好像应该有直接的方法 看看TEdit类,我认为好像可以借用过来用 或者再定义一个公开属性,把这个属性的地址指向P 或者定义一个公开属性,把这个属性值改为P的地址 这些都是我想的,我也是刚学,多了我也不知道