Java 为什么AbstractList、AbstractSet使抽象不是接口

Java 为什么AbstractList、AbstractSet使抽象不是接口,java,interface,abstract-class,Java,Interface,Abstract Class,在学习抽象类和接口时。我很想知道为什么java集合中的所有类都是抽象的。为什么他们不实现接口而不是抽象类。我的问题是AbstractList,AbstractSet。为什么他们不让他们的界面 注::-我需要设计预期答案 我很想知道为什么java集合有所有的类抽象 这种假设是错误的,因为您有像Collection、List和Set这样的接口。。。在集合框架中 为什么他们不实现接口而不是抽象类 如果你的意思是AbstractList,AbstractSet。等等,因为它提供了基本的实现,这在接口(j

在学习抽象类和接口时。我很想知道为什么java集合中的所有类都是抽象的。为什么他们不实现接口而不是抽象类。我的问题是AbstractList,AbstractSet。为什么他们不让他们的界面

注::-我需要设计预期答案

我很想知道为什么java集合有所有的类抽象

这种假设是错误的,因为您有像Collection、List和Set这样的接口。。。在集合框架中

为什么他们不实现接口而不是抽象类

如果你的意思是
AbstractList,AbstractSet
。等等,因为它提供了基本的实现,这在接口(java8下面)中是不可能的

最后,结合你的两个观点,你可以看到

AbstractList implements Iterable<E>, Collection<E>, List<E> {} 
AbstractList实现Iterable、Collection、List{}
我很想知道为什么java集合有所有的类抽象

这种假设是错误的,因为您有像Collection、List和Set这样的接口。。。在集合框架中

为什么他们不实现接口而不是抽象类

如果你的意思是
AbstractList,AbstractSet
。等等,因为它提供了基本的实现,这在接口(java8下面)中是不可能的

最后,结合你的两个观点,你可以看到

AbstractList implements Iterable<E>, Collection<E>, List<E> {} 
AbstractList实现Iterable、Collection、List{}

大多数java集合同时实现了接口和扩展抽象类

例如:

  • HashMap和TreeMap扩展了实现Map的AbstractMap
  • ArrayList和LinkedList扩展了实现列表的AbstractList
  • HashSet和TreeSet扩展了实现Set的AbstractSet
在代码中,应尽可能将变量声明为接口。例如:

List<String> myList = new ArrayList<>();
List myList=new ArrayList();

大多数java集合同时实现了接口和扩展抽象类

例如:

  • HashMap和TreeMap扩展了实现Map的AbstractMap
  • ArrayList和LinkedList扩展了实现列表的AbstractList
  • HashSet和TreeSet扩展了实现Set的AbstractSet
在代码中,应尽可能将变量声明为接口。例如:

List<String> myList = new ArrayList<>();
List myList=new ArrayList();

列表
集合
地图
集合
都是接口。如果您谈论的是
AbstractList
AbstractCollection
AbstractMap
、或
AbstractSet
,那么您所需要做的就是查看Javadoc以了解实现它们的原因

例如:

公共抽象类抽象集
扩展抽象集合
机具组
此类提供Set接口的框架实现,以 尽可能减少实现此接口所需的工作量。过程 通过扩展此类实现集合的方法与 通过扩展AbstractCollection实现集合,除了 此类子类中的所有方法和构造函数都必须 遵守集合接口施加的附加约束(对于 实例,add方法不能允许添加多个 对象的实例到集合)

请注意,此类不会覆盖来自的任何实现 AbstractCollection类。它只是为 等于和hashCode


列表
集合
地图
,以及
集合
都是接口。如果您谈论的是
AbstractList
AbstractCollection
AbstractMap
、或
AbstractSet
,那么您所需要做的就是查看Javadoc以了解实现它们的原因

例如:

公共抽象类抽象集
扩展抽象集合
机具组
此类提供Set接口的框架实现,以 尽可能减少实现此接口所需的工作量。过程 通过扩展此类实现集合的方法与 通过扩展AbstractCollection实现集合,除了 此类子类中的所有方法和构造函数都必须 遵守集合接口施加的附加约束(对于 实例,add方法不能允许添加多个 对象的实例到集合)

请注意,此类不会覆盖来自的任何实现 AbstractCollection类。它只是为 等于和hashCode


集合框架有一些接口,如
List
Map
Set

然后是实现接口的抽象类,以及在所有具体实现中常用的定义/实现方法。示例:
AbstractList
AbstractSet
AbstractMap


然后向具体的集合类添加附加功能,如扩展这些抽象类的
ArrayList
HashMap
HashSet

集合框架具有
List
Map
Set
等接口

然后是实现接口的抽象类,以及在所有具体实现中常用的定义/实现方法。示例:
AbstractList
AbstractSet
AbstractMap


然后向具体的集合类添加附加功能,如扩展这些抽象类的
ArrayList
HashMap
HashSet

您的意思是像
列表
集合
Map
interfaces?
Collection
是一个接口
为什么java集合有