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