首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 實現多重繼承的方式:混合 + 介面

     編輯:關於C語言

有如下結構的程式碼:

其中 Parent 的 ApplyEditable 是一個 Virtual 方法,Child 要對其進行各自不同的實現,即重寫 ApplyEditable 方法。

上述程式碼中,很明顯 ParentA 和 ParentB 有重複程式碼。但是由於 C# 不支援多重繼承,所以無法使用多重繼承的方式把這些重複程式碼封裝起來。

我們只有走變通的道路:經過我的實踐,使用混合 + 介面的方式。可以比較好的實現多重繼承。

我們還是直接來看圖:

具體的解決步驟是:

  1. 把之前在 ParentA 和 ParentB 中公共的程式碼封裝到 BaseC 中,並作為 Parent 的一個屬性。
  2. 把需要重寫的方法 ApplyEditable 定義到一個介面 IBaseCAction 中。(實際上,如果只有一個方法需要重寫的話,可以不用定義介面,直接在 BaseC 中定義一個 Action 委派變數就可以了。當然定義介面更方便支援多個重寫方法。)
  3. 讓 ChildA 和 ChildB 實作 IBaseCAction 介面,並分別實現 ApplyEditable 的不同程式碼。
  4. 在 Child 類別的建構函式中,把自己傳給 BaseC 的實例化,即 this.BaseC = new BaseC(this);。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved