java中一个类可以实现不同的接口,
接口的引用可以指向实现接口的类的对象。
那么就会出现不同的接口指向同一个类的对象。
想问一下这种情况有什么区别?如下所示:
Deque<Integer> a1 = new LinkedList<>();
List<Integer> a2 = new LinkedList<>();
Deque<Integer> a1 = new LinkedList<>();
List<Integer> a2 = new LinkedList<>();
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
在Java中,接口引用指向同一个类的不同对象时,它们的行为可能会有所不同。这是因为不同的接口可能有不同的方法签名和行为规范。在你给出的例子中,Deque<Integer>
和 List<Integer>
都是 LinkedList<Integer>
的接口引用。尽管它们都指向同一个 LinkedList
实例,但它们的类型不同,因此它们可以调用的方法也不同。
具体来说:
Deque<Integer> a1 = new LinkedList<>();
:这里,a1
是一个双端队列(Deque
)类型的引用,它指向一个 LinkedList
实例。由于 Deque
接口继承了 Queue
接口,所以它可以执行队列操作,如 add()
, offer()
, remove()
, poll()
等。此外,它还支持双端队列的操作,如 addFirst()
, addLast()
, removeFirst()
, removeLast()
, getFirst()
, getLast()
等。
List<Integer> a2 = new LinkedList<>();
:这里,a2
是一个列表(List
)类型的引用,它也指向同一个 LinkedList
实例。由于 List
接口继承自 Collection
接口,所以它可以执行集合操作,如 add()
, remove()
, contains()
, size()
, isEmpty()
等。此外,它还支持列表特有的操作,如 get()
, set()
, indexOf()
, lastIndexOf()
等。
总之,虽然这两个接口引用指向同一个 LinkedList
实例,但由于它们的类型不同,它们可以调用的方法也不同。在实际编程中,我们需要根据需要选择合适的接口类型来使用相应的方法。