KDX*_*DX2 -1 java inheritance multiple-inheritance
我目前对这个问题有点困惑.我注意到ArrayList是一个实现List的类,后者又扩展了Collection.
在Collection<?>我们有一堆方法,一个可识别的方法containsAll().我查看了官方文档,ArrayList但可以看出,Array列表中没有这样的方法.在页面的页脚中写了一些东西,说"继承的方法",containsAll()并在那里提到.
我不明白(从文档中)是,containsAll()即使它在ArrayList类中有空体还是根本没有定义?如果不是这种违反Java规则的行为?
还有其他人以同样的方式"失踪"吗?!
containsAll()方法的定义是通过AbstractCollection扩展AbstractList,然后通过扩展ArrayList.所以ArrayList继承containsAll()实现.
请考虑以下代码:
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
boolean contains = list.containsAll(Arrays.asList("b", "c"));
Run Code Online (Sandbox Code Playgroud)
这里,当list.containsAll()调用时,实际上AbstractCollection执行了声明的方法.