在抽象類中,我們可以使所有的方法都是抽象的,以便它可以像接口一樣工作,那麼爲什麼要使用接口呢?我能夠想出的一個原因是我們可以實現多個接口而不是擴展多個類。是否有涉及任何設計或性能相關的東西?爲什麼要使用接口,而我們可以使所有方法都是抽象的?
-1
A
回答
2
你已經得到了答案。使用接口,我們可以執行多種類型的行爲,因爲使用類不會爲你工作。例如,你可以強制一個類與IComparable以及INumerable一樣,但如果你想用類來完成它是不可能的。
0
設計明智的,最好的準則使用Interface
你代碼的行爲/合同/功能定義(見List
接口),並使用Abstract
類,你必須atlease一些可重複使用(通過繼承)方法實現。
雖然所有方法都可以使用abstract
,但在這種情況下,Interface
是首選。
1
您已經確定了接口允許抽象類不允許的一件事。一個類不能擴展多個抽象類。
是否有任何設計或性能相關的東西?
沒有性能差異。
你可能會認爲,抽象類(實際上,所有類)的單一繼承限制使得這是「設計事物」。當然,它會嚴重限制你在面向對象設計中使用多態性。
(你也可以說,你不能遵循「編程接口」當你沒有界面的格言。但是,這是一個薄弱的論據......一個術語狡辯。)
相關問題
- 1. 爲什麼任何一種抽象都使用接口而不是抽象類?
- 2. 爲什麼要使用抽象接口?
- 3. 爲什麼使用抽象如果我們有接口
- 4. 爲什麼我們不能在WCF中使用抽象類而不是接口?
- 5. 爲什麼我們有抽象類時需要接口?
- 6. 我們需要聲明的接口方法是抽象
- 7. 爲什麼我們可以調用接口org.w3c.dom.Document的方法?
- 8. 爲什麼我們在抽象類存在時需要接口?
- 9. 爲什麼我可以抽象重寫一個抽象方法?
- 10. 爲什麼我們需要抽象類而不是虛擬類?
- 11. 爲什麼我們在java中使用抽象類和抽象方法
- 12. 接口抽象的所有方法?
- 13. 爲什麼我們使用接口和抽象類,在什麼情況下應該使用abract類和接口
- 14. 爲什麼我們使用接口而不是協議?
- 15. 爲什麼我們要使用抽象類或方法,爲什麼不重寫超類方法呢?
- 16. 爲什麼要在Java中接口,如果我們有抽象類?
- 17. 我們可以在抽象類中使用靜態方法嗎?
- 18. 爲什麼你需要知道抽象類的抽象方法是否抽象
- 19. 爲什麼在接口中有抽象類和抽象變量/方法?
- 20. 爲什麼HttpContext是一個抽象類而不是接口?
- 21. 爲什麼IDisposable是一個接口,而不是抽象類?
- 22. 爲什麼java.sql.Statement是一個接口而不是抽象類?
- 23. 爲什麼我們實現接口抽象類
- 24. 我什麼時候需要使用抽象方法?
- 25. 爲什麼在我們的項目中需要接口層/抽象類?
- 26. 即使沒有抽象方法,類也可以抽象嗎?如果是的話有什麼用?
- 27. 爲什麼接口或抽象類有用? (或爲什麼?)
- 28. 爲什麼要使用抽象工廠
- 29. 爲什麼我們使用接口引用一個子對象?
- 30. 爲什麼我需要Iterator接口,爲什麼要使用它?
你自己回答了這個問題...... – jlordo 2013-05-04 13:53:46
把問題寫成答案,接受它,你就完成了。 – Maroun 2013-05-04 13:54:10
http://stackoverflow.com/questions/10040069/abstract-class-vs-interface-in-java – 2013-05-04 13:54:57