有如下結構的**:
上述**中,很明顯parenta和parentb有重複**。但是由於c#不支援多繼承,所以無法使用多繼承的方式把這些重複**封裝起來。
我們只有走變通的道路:經過我的實踐,使用混合+介面的方式。可以比較好的實現多繼承。
我們還是直接來看圖:
具體的解決步驟是:
把之前在parenta和parentb中公共的**封裝到basec中,並作為parent的乙個屬性。
在child類的構造器中,把自己傳給basec的例項化,即this.basec = new basec(this);
編輯收藏
網摘 所屬分類: .net general
#1樓 2009-05-13 11:53 韋恩卑鄙
用組合來代替繼承 不錯啊
這個是不是模板模式阿
回覆引用
#2樓 2009-05-13 13:07 別愛上哥,哥只是個傳說!
下不鳥**
回覆引用
#3樓[樓主] 2009-05-13 13:32 redmoon
回覆引用
#4樓 2009-05-13 13:55 lancezhang
放在skydrive上的東西經常有人會說下不了,檔案小的話放在cnblogs上也可以啊,呵呵
回覆引用
#5樓 2009-05-13 21:27 zhenway
沒看出多繼承的影子
回覆引用
#6樓 2009-05-13 21:36 fenrir
為什麼不使用靜態方法+擴充套件方法
回覆引用
#7樓[樓主] 2009-05-13 23:23 redmoon
@fenrir 我也想用靜態方法+擴充套件方法。可惜不會用,希望你不吝賜教。
回覆引用
#8樓 2009-05-14 00:20 溫景良(jason)
很詳細回覆
引用
C 介面實現多繼承
前言 本博文主要講解c 介面實現多繼承,更多關於介面 繼承的知識,請檢視 c 介面 inte ce 精講 c 隱式介面與顯式介面 c 繼承細則,你真的知道嗎?介面是方法的抽象,如果不同的類有同樣的方法,那麼就應該考慮使用介面。c 中介面可以多繼承,介面之間可以相互繼承和多繼承。乙個類可以同時繼承乙個...
JavaScript實現繼承的混合方式
function animal age animal.prototype.sayage function function dog age,name dog.prototype new animal dog.prototype.sayname function var dog new dog 15,...
C 中的介面繼承和實現繼承
c 中的繼承基於乙個事實 父類定義的成員函式會一直被子類繼承 包括被子類隱藏的部分 而父類中提供的函式可以有三種 1 純虛函式,2 普通虛函式 3 普通成員函式。這三種函式型別代表了三種繼承設計模式。乙個簡單的例項 如下 class shape class rectangle public shap...