我看过Lists
而Sets
是Collection
的子类,那么为什么他们不实施Collection
的所有方法?
如果我尝试显式编写一个扩展其中一个接口的类,它会产生编译错误,要求我实现很多方法。
答案 0 :(得分:5)
标准的JDK列表/集实现分别扩展AbstractList
和AbstractSet
,它们提供了一个"骨架实现" List
/ Set
接口。具体类(例如ArrayList
和HashSet
)通过实现这些抽象类未涵盖的任何方法(或根据需要覆盖它们)来填补空白。因此,仅通过查看ArrayList
来源,您可能会得到并非所有方法都已实施的印象,但如果您同时查看AbstractList
(和AbstractCollection
- - 见下文)。
AbstractList
和AbstractSet
扩展AbstractCollection
,实现Collection
接口(再次提供"骨架实现")。
答案 1 :(得分:2)
List
和Set
本身就是接口,它们没有实现任何功能。
ArrayList
(例如)实现List
,为此,还必须实现Collection
。