M mydelphi2006 Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-17 #21 To: kaida 這樣也是一種變通方法,但這對於全是自己創建類來說是可以這樣麻煩一點來做的,但如果A類與B類都是已有類,而且自己無法變更的話那就不行了。
B baiduan Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-17 #22 我觉得很简单阿。 如果TA ->TB->TC procedure Tc.testA(); var a:TA; begin a:=TA.create; a.test(); a.free; end; 大家看看这样行不行? //============== 也就是在c的方法里面直接声名A的对象,然后调用A的这个方法。
我觉得很简单阿。 如果TA ->TB->TC procedure Tc.testA(); var a:TA; begin a:=TA.create; a.test(); a.free; end; 大家看看这样行不行? //============== 也就是在c的方法里面直接声名A的对象,然后调用A的这个方法。
M mydelphi2006 Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-17 #23 To: baiduan 如果A類的方法代碼中操作A類定義的保護的變量呢,而且在C類中又變更過A類的定義的保護變量,那新申請的實例A對象執行對應的方法出來的結果就不一樣了!
寻 寻路 Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-17 #24 procedure TC.Test; var a: TA; begin //inherited; ?ò2???μ÷ó???ààTBμ?Test·?·¨£? //TA.Test; μ??òòa?ì3DTAμ?Test·?·¨ a := TA.Create; a.Test; a.Free; ShowMessage('C class'); end;
procedure TC.Test; var a: TA; begin //inherited; ?ò2???μ÷ó???ààTBμ?Test·?·¨£? //TA.Test; μ??òòa?ì3DTAμ?Test·?·¨ a := TA.Create; a.Test; a.Free; ShowMessage('C class'); end;
B baiduan Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-17 #25 to lz: A被保护的私有变量一般c是没办法变动的。 难道你真的想变动吗? 如果c能变动那么; procedure Tc.testA(); var a:TA; begin a:=TA.create; { 变动A的保护变量。 } a.test(); a.free; end; 再说了,如果a的方法做的本来就是失败,c还要继承他,又是失败,c还能变动a的 私有变量,更是失败,这么失败不如在c里面重新实现a的 方法好了,敲键盘是我们code的天职嘛。
to lz: A被保护的私有变量一般c是没办法变动的。 难道你真的想变动吗? 如果c能变动那么; procedure Tc.testA(); var a:TA; begin a:=TA.create; { 变动A的保护变量。 } a.test(); a.free; end; 再说了,如果a的方法做的本来就是失败,c还要继承他,又是失败,c还能变动a的 私有变量,更是失败,这么失败不如在c里面重新实现a的 方法好了,敲键盘是我们code的天职嘛。
M mydelphi2006 Unregistered / Unconfirmed GUEST, unregistred user! 2006-05-17 #26 雖然沒能做到如C++那樣的結果,但我很感謝大家的熱情回答! 由於時間緊張的問題,我隻好結貼了,因為我的工作又要開始忙碌了。 祝大家好運!