java - Javadoc 中的 Java ArrayList 定义
问题描述
我正在尝试深入研究 Java Collection 层次结构的主题,并且在阅读https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html之后有点困惑 在 方法摘要表之后注意:从类 java.util.AbstractCollection 继承的方法有:containsAll、toString
从接口 java.util.List 继承的方法: containsAll、equals、hashCode 因此,ArrayList 从两个“源”继承 containsAll。我有两个问题:
- 如何从不同的“来源”继承相同的方法?使用哪一种?
- 一个类如何从接口继承?类只是实现一个接口。
这是 ArrayList 的声明 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/ArrayList.java:
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable
解决方案
对于一个通用示例,我们有一个接口 MyInterface、一个超类 SuperClass 和一个类 MyClass。
我的界面:
public interface MyInterface {
public void functionA();
}
超类:
public class SuperClass {
public void functionB() { ... }
public void functionA() { ... }
}
我的课:
public class MyClass extends SuperClass implements MyInterface {
public void functionC() { ... }
}
MyClass 扩展 SuperClass 的事实意味着 MyClass 继承了另外两个方法 functionB 和 functionA。等价于MyClass extends SuperClass
:
public class MyClass {
public void functionB() { ... }
public void functionA() { ... }
public void functionC() { ... }
}
MyClass 实现 MyInterface 的事实意味着 MyClass 需要实现一个方法 functionA,该方法尊重 MyInterface 中定义的签名。希望 MyClass 实现这样的方法,因为它继承了 SuperClass。
ArrayList 的情况完全一样。ArrayList 实现了接口 List。所以ArrayList需要实现一个方法containAll()。希望 ArrayList 扩展了实现方法 containsAll() 的 AbstractCollection。所以 ArrayList 实际上是在实现一个方法 containsAll()
推荐阅读
- ajax - 我在 Websphere 开发环境中得到 serverError-javax.faces.application.ViewExpiredException 但没有进入我的本地环境
- java - 如何创建仅包含列标题的 JTable,不添加行
- c++ - CreateProcess() 可以授予管理员权限吗?
- java - 使用 SpringData 存储地图
- c# - c# Wpf 将枚举绑定到组合框
- credentials - node-red - 重新启动后未保存凭据
- hyperledger-fabric - 获取 hyperledger-composer 休息服务器中的所有交易历史
- r - 具有 1200 个值的 ggplot2 堆叠图
- python - 如何从 .yml 加载“null”作为无(str 类),而不是(NoneType 类)?
- swift - 如何对二进制位数执行一些算术运算?