C 中實現多繼承的方式混合 介面

2022-03-22 19:51:06 字數 1085 閱讀 5609

有如下結構的**:

上述**中,很明顯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...