我在Java中看到Collections Framework
中LinkedList
类的2个有效声明。
- LinkedList a = new LinkedList();
- Queue a = new LinkedList();
这两种实现之间究竟有什么区别?
Queue是一个由LinkedList类实现的接口。
在你的第一种情况下,你一个是一个LinkedList对象的引用。在后者中,a是一个指向LinkedList对象的Queue接口引用,因此,在最后一种情况下,您将只能执行LinkedList的服务,这些服务包含在Queue接口中。
在你的代码中只有一个实现:LinkedList。
Queue是LinkedList类实现的多个接口之一。
以下是LinkedList的代码
public class LinkedList<E> extends AbstractSequentialList<E>
implements List<E>, Deque<E>, Cloneable, Serializable
所以你可以看到这个类实现了Deque<E>
,所以这个接口扩展了Queue<E>
接口,因此您可以创建如下对象:
Queue B = new LinkedList();
Deque d = new LinkedList();
在上面的声明中,LinkedList
对象被Queue
接口引用,这意味着你可以调用Queue
中声明的所有方法。