在C#中,什麼時候應該使用接口,何時應該使用抽象類?什麼是決定性因素?接口與抽象類
Q
接口與抽象類
85
A
回答
107
一個抽象類的優點是:對指定的方法的默認實現
- 能力
- 新增不變檢查到功能
- 已在「接口」方法的調用方式 稍微控制
- 能夠提供與「免費」界面相關或不相關的行爲
接口僅僅是數據傳遞合同,並沒有這些功能。但是,它們通常更靈活,因爲類型只能從一個類派生,但可以實現任意數量的接口。
+0
@JaredPar:我猜這是爲了勸阻回答重複的問題(順便說一句,我不是那個低估了你的人) – Brann 2009-04-14 13:34:25
5
真正的問題是:是否使用接口或基類。這已經在之前報道過了。
在C#中,抽象類(標有關鍵字「abstract」的一個類)只是一個類,您無法實例化對象。這與僅僅區分基類和接口之間的區別有所不同。
59
抽象類和接口在語義上是不同的,儘管它們的用法可能會重疊。
抽象類通常用作類似類的構建基礎。類的常見實現可以放在抽象類中。
接口通常用於指定類的能力,其中類不一定非常相似。
6
要考慮的另一件事是,由於沒有多重繼承,如果您希望某個類能夠從您的接口/抽象類實現/繼承,但從另一個基類繼承,請使用接口。
相關問題
- 1. 與接口和抽象類
- 2. 與抽象類的接口
- 3. 抽象類MouseAdapter與接口
- 4. 100%抽象類與接口
- 5. 抽象類,類,接口
- 6. 抽象類與代表族的接口
- 7. 設計與接口和抽象類
- 8. Class Vs抽象類與Vs接口
- 9. 接口與抽象類? (一般OOP)
- 10. 抽象類返回接口
- 11. PHP抽象類和接口
- 12. 抽象類實現接口
- 13. 接口中的抽象類?
- 14. 抽象類V/s接口
- 15. 抽象類或SoftDelete接口
- 16. C#接口和抽象類
- 17. 抽象類和接口
- 18. 接口vs 100%抽象類
- 19. 純抽象類和接口
- 20. 抽象接口
- 21. c#接口,抽象類,強制繼承類不抽象類
- 22. 類層次結構設計 - 接口+基類與抽象類
- 23. 抽象與抽象類
- 24. 接口和抽象
- 25. RequestFactory與值類型的接口/抽象類
- 26. 實現從抽象類可比接口與具體的子類
- 27. 類型參數的約束:接口與抽象類
- 28. 抽象類和接口在Java中
- 29. IoC服務的抽象類或接口?
- 30. 在抽象基類上聲明接口
我不同意這是「確切」的重複。 – 2009-04-14 13:45:33