8
A
回答
17
它們非常相似,但也有一些重要的技術差異:
- 一個抽象類可以提供一些方法的默認實現,但接口不允許你提供任何實現。
- 您可以實現多個接口,但只能從一個抽象類繼承。
這些差異會影響這兩種技術應該如何使用:
- 你應該使用的接口定義合同。
- 抽象類可以用於重用代碼 ...但請注意,它不是重用代碼的唯一方法。你還應該考慮其他方法,如遏制。
4
接口不允許定義任何成員方法,而抽象類允許定義一些或全部成員方法。然而,一個類只能擴展一個類(抽象或不抽象),但可以實現儘可能多的接口。
3
我喜歡將界面視爲合同。任何實現接口的類都必須提供有關在調用合同中定義的任何方法時要執行的操作的詳細信息。抽象類是定義一組實際行爲的類,即不僅僅是稍後要實現的合約,而且該類不能被實例化。
相關問題
- 1. '非虛擬界面'和'抽象界面'有什麼區別?
- 2. 抽象類和Mixin有什麼區別?
- 3. 繼承時抽象類和非抽象類有什麼區別
- 4. 抽象和封裝有什麼區別?
- 5. 抽象和虛擬有什麼區別?
- 6. Actionscript 3:界面和抽象之間有什麼區別,何時使用它們..?
- 7. 抽象類和靜態類之間有什麼區別?
- 8. 抽象類和接口之間有什麼區別?
- 9. 抽象類和繼承之間有什麼區別?
- 10. 繼承和抽象類有什麼區別?
- 11. 抽象與外觀有什麼區別?
- 12. 界面/抽象類
- 13. 接口類和抽象類有什麼區別和相似之處?
- 14. 具有零參數的抽象類和沒有參數的抽象類之間有什麼區別?
- 15. 抽象類中的方法的外部抽象和局部抽象之間有什麼區別?
- 16. 解析樹和抽象語法樹有什麼區別?
- 17. DBpedia中的抽象和評論有什麼區別
- 18. 具體RTN和抽象RTN有什麼區別?
- 19. 「抽象解析樹」和「解析樹」有什麼區別?
- 20. Doxygen java界面和抽象類
- 21. 有界通配符和類型參數有什麼區別?
- 22. MustInherit和抽象類之間的區別
- 23. '>'和'#'在Linux中的命令行界面有什麼區別?
- 24. C++概念和界面有什麼區別?
- 25. 在PlayN Graphics界面中,height和screenHeight方法有什麼區別?
- 26. 流暢的界面和方法鏈之間有什麼區別?
- 27. 界面和設計模式有什麼區別?
- 28. LDAP和REST界面有什麼區別?哪個最好?
- 29. 有界和無界設備有什麼區別?
- 30. 抽象類和接口在JVM中的存儲方式有什麼區別
有很多這方面的帖子:http://stackoverflow.com/questions/761194/interface-vs-abstract-class-general-oo – skaz 2010-11-08 18:51:32
〜杏仁快樂有堅果,土墩不〜除了替換帶有抽象類的「杏仁歡樂」,帶有接口的「Mounds」,以及一些具體方法的「堅果」。 – Powerlord 2010-11-08 19:06:23