自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C#中實(shí)現(xiàn)多繼承的方式:混合+接口

開(kāi)發(fā) 后端
本文作者朱永光先生,微軟MVP、.NET技術(shù)的講師。這里將為大家講解如何在C#中實(shí)現(xiàn)多繼承的方式,途徑就是使用混合+接口。

有如下結(jié)構(gòu)的代碼:

image

其中Parent的ApplyEditable是一個(gè)Virtual方法,Child要對(duì)其進(jìn)行各自不同的實(shí)現(xiàn),即重寫(xiě)ApplyEditable方法。

上述代碼中,很明顯ParentA和ParentB有重復(fù)代碼。但是由于C#不支持多繼承,所以無(wú)法使用多繼承的方式把這些重復(fù)代碼封裝起來(lái)。

我們只有走變通的道路:經(jīng)過(guò)我的實(shí)踐,使用混合+接口的方式。可以比較好的實(shí)現(xiàn)多繼承。

我們還是直接來(lái)看圖:

image

具體的解決步驟是:

1.把之前在ParentA和ParentB中公共的代碼封裝到BaseC中,并作為Parent的一個(gè)屬性。

2.把需要重寫(xiě)的方法ApplyEditable定義到一個(gè)接口IBaseCAction中。(實(shí)際上,如果只有一個(gè)方法需要重寫(xiě)的話,可以不用定義接口,直接在BaseC中定義一個(gè)Action的委托變量就可以了。當(dāng)然定義接口更方便支持多個(gè)重寫(xiě)方法。)

3.讓ChildA和ChildB實(shí)現(xiàn)IBaseCAction接口,并分別實(shí)現(xiàn)ApplyEditable的不同代碼。

4.在Child類的構(gòu)造器中,把自己傳給BaseC的實(shí)例化,即this.BaseC = new BaseC(this);

我就不貼代碼了,完整的源代碼下載地址為:http://cid-f73516baeac50992.skydrive.live.com/self.aspx/SharedCode/MultiDerived.zip

【編輯推薦】

  1. C#中的Adapter設(shè)計(jì)模式淺析
  2. VB.NET和C#逐層橫向?qū)Ρ?/FONT>
  3. C#3.0中自動(dòng)屬性和對(duì)象初始化器
責(zé)任編輯:彭凡 來(lái)源: cnblogs
相關(guān)推薦

2009-06-16 10:20:05

多繼承C#

2009-08-24 10:31:37

C#接口繼承

2009-09-24 15:20:54

C#接口定義

2009-09-01 18:29:10

C#繼承C#多態(tài)

2024-12-20 09:48:47

C#Python代碼

2009-08-13 18:15:06

C#繼承構(gòu)造函數(shù)

2009-08-31 15:55:17

C#實(shí)現(xiàn)Strateg

2009-08-25 17:55:52

C#實(shí)現(xiàn)Strateg

2011-07-14 11:08:30

C#繼承

2024-10-09 07:59:10

C#接口信息

2009-07-31 18:28:46

實(shí)現(xiàn)C#顯示圖像

2009-08-24 10:06:31

C#接口成員

2009-08-31 18:01:41

C#接口事件

2009-08-31 17:16:12

C#實(shí)現(xiàn)接口

2009-02-05 15:32:23

接口委托

2009-05-26 16:33:48

PythonC#Run As

2024-09-13 08:27:00

2009-09-04 13:22:31

C#實(shí)現(xiàn)多個(gè)接口

2009-09-01 18:29:24

C#實(shí)現(xiàn)多個(gè)接口

2009-08-31 16:48:02

C#實(shí)現(xiàn)IDispos
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)