ArrayList或HashSet类是否隐式实现了Collection接口?

时间:2014-06-11 14:22:53

标签: java collections

我看过ListsSetsCollection的子类,那么为什么他们不实施Collection的所有方法?

如果我尝试显式编写一个扩展其中一个接口的类,它会产生编译错误,要求我实现很多方法。

2 个答案:

答案 0 :(得分:5)

标准的JDK列表/集实现分别扩展AbstractListAbstractSet,它们提供了一个"骨架实现" List / Set接口。具体类(例如ArrayListHashSet)通过实现这些抽象类未涵盖的任何方法(或根据需要覆盖它们)来填补空白。因此,仅通过查看ArrayList来源,您可能会得到并非所有方法都已实施的印象,但如果您同时查看AbstractList(和AbstractCollection - - 见下文)。

AbstractListAbstractSet扩展AbstractCollection,实现Collection接口(再次提供"骨架实现")。

答案 1 :(得分:2)

ListSet本身就是接口,它们没有实现任何功能。

ArrayList(例如)实现List,为此,还必须实现Collection