在抽象類中,我們可以使所有的方法都是抽象的,以便它可以像接口一樣工作,那麼爲什麼要使用接口呢?我能夠想出的一個原因是我們可以實現多個接口而不是擴展多個類。是否有涉及任何設計或性能相關的東西?爲什麼要使用接口,而我們可以使所有方法都是抽象的?
-1
A
回答
2
你已經得到了答案。使用接口,我們可以執行多種類型的行爲,因爲使用類不會爲你工作。例如,你可以強制一個類與IComparable以及INumerable一樣,但如果你想用類來完成它是不可能的。
0
設計明智的,最好的準則使用Interface
你代碼的行爲/合同/功能定義(見List
接口),並使用Abstract
類,你必須atlease一些可重複使用(通過繼承)方法實現。
雖然所有方法都可以使用abstract
,但在這種情況下,Interface
是首選。
1
您已經確定了接口允許抽象類不允許的一件事。一個類不能擴展多個抽象類。
是否有任何設計或性能相關的東西?
沒有性能差異。
你可能會認爲,抽象類(實際上,所有類)的單一繼承限制使得這是「設計事物」。當然,它會嚴重限制你在面向對象設計中使用多態性。
(你也可以說,你不能遵循「編程接口」當你沒有界面的格言。但是,這是一個薄弱的論據......一個術語狡辯。)
相關問題
- 1. 爲什麼任何一種抽象都使用接口而不是抽象類?
- 2. 爲什麼使用抽象如果我們有接口
- 3. 爲什麼我們不能在WCF中使用抽象類而不是接口?
- 4. 爲什麼我們有抽象類時需要接口?
- 5. 我們需要聲明的接口方法是抽象
- 6. 爲什麼使用接口而不是抽象類與DI?
- 7. 爲什麼我們可以調用接口org.w3c.dom.Document的方法?
- 8. 爲什麼我們需要抽象類而不是虛擬類?
- 9. 爲什麼我們在java中使用抽象類和抽象方法
- 10. 接口抽象的所有方法?
- 11. 爲什麼我們要使用抽象類或方法,爲什麼不重寫超類方法呢?
- 12. 爲什麼你需要知道抽象類的抽象方法是否抽象
- 13. 爲什麼HttpContext是一個抽象類而不是接口?
- 14. 爲什麼java.sql.Statement是一個接口而不是抽象類?
- 15. 爲什麼我們實現接口抽象類
- 16. 爲什麼在我們的項目中需要接口層/抽象類?
- 17. 即使沒有抽象方法,類也可以抽象嗎?如果是的話有什麼用?
- 18. 爲什麼接口或抽象類有用? (或爲什麼?)
- 19. 爲什麼要使用抽象工廠
- 20. 爲什麼我們使用接口引用一個子對象?
- 21. 爲什麼我們要實現接口?
- 22. 是否有可能只覆蓋n方法中的接口或抽象類中所需的抽象方法?
- 23. 爲什麼我們不能在接口/抽象類中使用Shared(靜態)函數/方法?
- 24. 抽象類可以使用那種方式或我應該使用接口?
- 25. 內部抽象方法。爲什麼會有人擁有它們?
- 26. 爲什麼要使用Create方法而不是使用「new」?
- 27. 爲什麼我們主要使用LocalDB而不是SQL Server?
- 28. 有人可以給我一個什麼時候抽象類和接口必須被使用的想法嗎?
- 29. 沒有調用類抽象我們可以從接口實現少數(不是全部)方法嗎?
- 30. 我們可以使用Dispose方法而不實現IDisposable接口嗎?
你自己回答了這個問題...... – 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