所以我有一行代码:
List<Deque<Integer>> pegs = new Arraylist<>();
for(int i=0; i< NUM_PEGS; i++){
pegs.add(new LinkedList<Integer>());
}
我想知道Arraylist通过实现接口List获得了哪些额外的功能?我之所以能够将LinkedList添加到pegs是因为LinkedList实现了Deque接口吗?
答案 0 :(得分:5)
我不会说ArrayList通过实现List接口获得额外的功能。它实际上提供了比List合约中指定的功能更多的功能。您可以比较List和ArrayList的文档,以查看差异。
对于你的第二个问题,是的,你可以在Deque的文档中看到它是由LinkedList实现的。
答案 1 :(得分:3)
通常,课程不会收到任何&#34;额外的功能&#34;通过实现一个接口。
(自java 8以来,这已经有所改变,因为接口现在可以包含default
方法,所以实际上可以通过实现接口来接收额外的功能,但这不是什么这个问题是关于。)
实现接口时,类必须提供接口所需的所有功能。必须将代码添加到类中以提供该功能。 ArrayList
为了提供List
界面而做了所有这些。
那么,您可能会问,实现接口的重点是什么?
关键是,在您的代码中,您可以将列表简称为List
,而不知道它实际上是ArrayList
,这意味着您的代码可以与任何类一起使用实现List
接口,而不仅仅是ArrayList
。
至于你的第二个问题:答案是&#34;是&#34;。