介面與抽象類的區別:
介面支持多繼承;抽象類不能實作多繼承,
介面可以用于支持回呼;抽象類不能實作回呼,因為繼承不支持,
介面只包含方法、屬性、索引器、事件的簽名,但不能定義欄位和包含實作的方法;抽象類可以定義欄位、屬性、包含有實作的方法,
介面可以作用于值型別和參考型別;抽象類只能作用于參考型別,
什么情景下使用介面,什么情景下使用抽象類?
抽象類:
定義了一組介面,但又不想強迫每個實作類都必須實作所有的介面,可以用abstract class定義一組方法體,甚至可以是空方法體,然后由子類選擇自己所感興趣的方法來覆寫,
某些場合下,只靠純粹的介面不能滿足類與類之間的協調,還必需類中表示狀態的變數來區別不同的關系,abstract的中介作用可以很好地滿足這一點,
規范了一組相互協調的方法,其中一些方法是共同的,與狀態無關的,可以共享的,無需子類分別實作;而另一些方法卻需要各個子類根據自己特定的狀態來實作特定的功能
介面:
類與類之前需要特定的介面進行協調,而不在乎其如何實作,
作為能夠實作特定功能的標識存在,也可以是什么介面方法都沒有的純粹標識,
需要將一組類視為單一的類,而呼叫者只通過介面來與這組類發生聯系,
需要實作特定的多項功能,而這些功能之間可能完全沒有任何聯系,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/4868.html
標籤:C#
上一篇:Cmd重定向
下一篇:log4Net 之 詳細組態檔
