C#如何實現多重繼承

陳雲佳發表於2018-05-31

C#中是沒有類的多重繼承(有一個子類有多個父類)這個概念,要使用多重繼承必須要通過介面Interface來完成

可是大家都知道Interface實際上就是一個虛擬函式列表指標.內部封裝的只有函式和屬性.而且介面(Interface)不能實力化只能通過派生(因為沒有建構函式)才可以使用.這一點和抽象類很類似,可是抽象類是個類,他有方法的實現,它所描述的物件是一個無法在現實中具現的物件,但它本身是個類物件。而介面實際上是一種標準。

現實中有些情況下不合理,例如: 男人 女人是兩個基類.
如果一個類同時繼承於這兩個類是什麼樣的人呢?

但可以用Interface實現多繼承!

最主要的還是減少程式複雜性,減少出錯的可能性。執行效率更高!

為什麼不支援多重繼承?
多重繼承的問題在C++中有很多討論,可以藉此理解為什麼C#取消多重繼承。
A->B
A->C C、B-〉D D會產生一些列問題。

實現藉口留出函式介面具體實現通過組合的方式來實現多重繼承中方法體的實現.這樣既保證了單一繼承父類的唯一性,又保證了多重繼承的優點.我個人認為是個很不錯的設計方法。

相關文章