Java代码中接口的实现

Java代码中接口的实现,java,Java,所以我有一行代码是这样的: List<Deque<Integer>> pegs = new Arraylist<>(); for(int i=0; i< NUM_PEGS; i++){ pegs.add(new LinkedList<Integer>()); } List pegs=new Arraylist(); 对于(int i=0;i

所以我有一行代码是这样的:

List<Deque<Integer>> pegs = new Arraylist<>();
for(int i=0; i< NUM_PEGS; i++){
   pegs.add(new LinkedList<Integer>());
}
List pegs=new Arraylist();
对于(int i=0;i

我想知道Arraylist通过实现接口列表可以获得哪些额外功能?我之所以能够将LinkedList添加到pegs,是因为LinkedList实现了Deque接口?

我不会说ArrayList通过实现List接口获得了额外的功能。它实际上提供了比列表合同中指定的功能更多的功能。您可以比较和的文档以查看差异


对于第二个问题,是的,您可以在文档中看到它是由LinkedList等实现的。

通常,类不会通过实现接口而获得任何“额外功能”

(自Java8以来,这一点发生了一些变化,因为接口现在可以包含
default
方法,因此实际上可以通过实现接口来获得额外的功能,但这不是这个问题的重点。)

实现接口时,类必须提供接口需要提供的所有功能。必须将代码添加到类中才能提供该功能
ArrayList
执行所有这些操作,以提供
List
界面

因此,您可能会问,实现接口的意义是什么

关键是,在代码中,您可以简单地将列表称为
列表
,而不知道它实际上是
数组列表
,这意味着您的代码可以使用实现
列表
接口的任何类,而不仅仅是
数组列表


至于你的第二个问题:答案是“是的”。

可能与谷歌搜索“Java API”重复。阅读ArrayList、LinkedList、List和Deque的页面。事实是这样的,你可以阅读java来发现是的,LinkedList实现了Deque。另外,请阅读多态性和面向对象编程概念。在本例中,实现该列表的动机是什么。为什么不做一个Arraylist?没错。接口类似于指定类必须具有的最小方法的类型,它们不添加功能,而是保证最小功能。可以通过接口类型实现此功能,但类仍必须在基类中定义它。@John关键是,您可以编写至少接受列表(实现列表的任何内容)的方法,而不必关心是否传入了LinkedList、ArrayList或任何其他类型的列表。您知道它们至少实现了列表界面的功能。