2013-05-19 72 views
-1

我很好奇爲什麼一些集合類擴展了抽象類,同時實現了接口List,Set等相應的接口。爲什麼不只是擴展抽象類。我可以理解實現其他接口來添加像Cloneble,Serializable等功能。但是擴展抽象類並實現已經抽象類實現的接口。我認爲我缺少一些設計原則。請有人能詳細說明這個設計理由?爲什麼一些集合擴展抽象也實現接口?

回答

3

集合接口存在,使人們可以消耗集合不知道什麼什麼類型的集合,它實際上是–即使不擴展任何抽象類。
例如,大多數併發集合不會擴展抽象基類。

抽象類存在爲大多數實現提供公共基本功能。

+1

爲了擴大一點,集合接口通常包含可以用幾個基本方法很容易表示的方法。抽象類提供了這些實現,通過編寫比接口包含的方法少得多的方法來實現集合。 –

+0

@SLaks _ **「存在集合接口,這樣人們可以在不知道實際收集什麼類型集合的情況下使用集合。」**我同意這一點,但並不意味着具體的實現必須是抽象和接口。僅僅是抽象類的孩子就夠了。因爲抽象已經實現了它,所以你可以在任何有Interface的引用的地方發送具體類。 – MrA

+0

@MrA:不;並非所有集合都繼承抽象類。 – SLaks

相關問題