我很好奇爲什麼一些集合類擴展了抽象類,同時實現了接口List,Set等相應的接口。爲什麼不只是擴展抽象類。我可以理解實現其他接口來添加像Cloneble,Serializable等功能。但是擴展抽象類並實現已經抽象類實現的接口。我認爲我缺少一些設計原則。請有人能詳細說明這個設計理由?爲什麼一些集合擴展抽象也實現接口?
-1
A
回答
3
集合接口存在,使人們可以消耗集合不知道什麼約什麼類型的集合,它實際上是–即使不擴展任何抽象類。
例如,大多數併發集合不會擴展抽象基類。
抽象類存在爲大多數實現提供公共基本功能。
0
Collection
接口定義合同,並且AbstractCollection
包含功能的「骨架實現」。
要了解更多信息,我建議您理解"design by contract"和骨架實現,最好在Joshua Bloch的Effective Java - episode 18中描述。
相關問題
- 1. 類都擴展一個抽象類,實現了接口
- 2. 什麼時候使用擴展/抽象和實現/在PHP接口
- 3. 擴展類中的接口和抽象類的繼承,實現
- 4. 語法問題 - 擴展實現接口的抽象類
- 5. 擴展對象VS實現接口
- 6. 抽象類實現接口
- 7. 擴展已經實現接口的抽象類的類是否需要接口?
- 8. 爲什麼我們實現接口抽象類
- 9. 擴展和實現接口
- 10. 將接口擴展到抽象類
- 11. Java擴展/抽象/實現問題
- 12. 實現接口的抽象類不需要方法實現。爲什麼?
- 13. 類實現擴展另一個接口
- 14. 實現一個擴展Parcelable的接口
- 15. 爲什麼實現接口的抽象類可能會錯過接口方法之一的聲明/實現?
- 16. 擴展一個抽象類來擴展另一個抽象類,並且需要重寫父抽象類實現的接口
- 17. 擴展抽象類 - 實現抽象方法
- 18. 爲什麼要使用抽象接口?
- 19. 擴展接口的方法爲什麼在實現擴展接口的類中不可見?
- 20. 使用的類,抽象,接口組合擴展
- 21. 用'where'約束創建抽象類也實現了接口
- 22. 實現與抽象類的接口時聲明什麼(不)?
- 23. XmlSerializer實現了什麼接口或抽象類
- 24. 實現與接口集合的接口
- 25. 在擴展另一個對象的同時實現RealmModel接口
- 26. 爲什麼Typescript中的抽象類實現和接口必須實現接口中的所有方法
- 27. 的Java抽象類實現接口
- 28. Java:接口和抽象類的實現
- 29. 接口 - 實現抽象類方法
- 30. 抽象的顯式接口實現
爲了擴大一點,集合接口通常包含可以用幾個基本方法很容易表示的方法。抽象類提供了這些實現,通過編寫比接口包含的方法少得多的方法來實現集合。 –
@SLaks _ **「存在集合接口,這樣人們可以在不知道實際收集什麼類型集合的情況下使用集合。」**我同意這一點,但並不意味着具體的實現必須是抽象和接口。僅僅是抽象類的孩子就夠了。因爲抽象已經實現了它,所以你可以在任何有Interface的引用的地方發送具體類。 – MrA
@MrA:不;並非所有集合都繼承抽象類。 – SLaks