如何強迫繼承該class的 abstract method必需要實作 |
答題得分者是:Kingron
|
SnP
一般會員 發表:11 回覆:19 積分:6 註冊:2003-03-03 發送簡訊給我 |
|
Kingron
中階會員 發表:1 回覆:51 積分:60 註冊:2005-09-14 發送簡訊給我 |
父类无法知道子类是否继承并实作。
子类必须继承并实作,否则在实例化的时候产生Abstract Error。 你可以更改设计,利用Event来实现。例如原来设计: TClassA=class private procedure DoDo; protected procedure DoSomething(Obj: SomeObject); virtual; abstract; end; ... procedure TClassA.DoDo; begin DoSomething; end; 可以更改设计为: TOnDoSomething = procedure (Obj: SomeObject) of object; TClassA=class private FOnDoSomething: TOnDoSomething; procedure DoDo; protected procedure DoSomething(Obj: SomeObject); virtual; abstract; publish property OnDosomething: TOnDoSomething read FOnDosomething write FOnDosomething; end; ... procedure TClassA.DoDo; begin if Assigned(FOnDoSomething) then FDoSomething(Obj); end; 但上面的方法有很多的限制,你可以考虑一下你的设计。其实要求子类必须继承并实作即可,你的设计没有问题的。这是面向对象的基本要求。
------
超级猛料:http://kingron.delphibbs.com |
SnP
一般會員 發表:11 回覆:19 積分:6 註冊:2003-03-03 發送簡訊給我 |
|
Kingron
中階會員 發表:1 回覆:51 積分:60 註冊:2005-09-14 發送簡訊給我 |
|
SnP
一般會員 發表:11 回覆:19 積分:6 註冊:2003-03-03 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
這就是設計該 class 的設計者的責任,必須將其所設計的 class 寫一份說明
指出哪些是 abstract method Delphi 的說明都有指出,你只要有用心看過,就會知道,例如 TString 與 TStringList,TString 就有指出哪些是 abstract method ===================引 用 SnP 文 章=================== 小弟遇到一個問題 ,delphi的parent class abstract method若繼承的class沒去實作 ,都不會發生錯誤 , 但對於繼承該class而言,怎麼知道有哪些abstract method需要實做呢? 還是有其他設計方式可以補強 Thanks Norman |
SnP
一般會員 發表:11 回覆:19 積分:6 註冊:2003-03-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |