接口作为返回类型与类作为返回类型一样吗?

LinkedList<Integer> q = new LinkedList<>();和Queue<Integer> q = new LinkedList<>();一样吗?

我现在想创建一个队列对象,正常情况下我会这样写:Queue<Integer> q = new Queue<>();

但是你仔细想想,这样写真的对吗?

Queue是接口,但是接口是不能实例化一个对象的

那怎么办?

先看看LinkedList部分源代码

java 复制代码
public class LinkedList<E>
    extends AbstractSequentialList<E>
    implements List<E>, Deque<E>, Cloneable, java.io.Serializable

可以看到 LinkedList实现了Deque(Deque继承了Queue),所以可以用LinkedList类实例化一个对象,而返回类型仍然是Queue接口,这样就创建好了一个队列(java创建一个队列理解起来真tm麻烦,还不如用c++呢)

相关推荐
java1234_小锋19 小时前
什么是可重入锁ReentrantLock?
java·开发语言
江南十四行19 小时前
Java并发编程中的锁机制:synchronized与Lock详解
java·开发语言
SamDeepThinking19 小时前
所有的框架源码,最怕的就是被debug
java·后端·程序员
吴声子夜歌19 小时前
Java——字符编码
java·字符编码·char
冷小鱼19 小时前
多线程编程深度解析:Java与Python框架实战指南
java·开发语言·python·多线程
java1234_小锋19 小时前
Spring AI 2.0 开发Java Agent智能体 - 结构化输出
java·人工智能·spring
asdfg125896319 小时前
Java 大型项目设计的“内功心法”---面向对象和接口编程
java·开发语言
ch.ju19 小时前
Java programming Chapter Three——Array
java·开发语言
努力努力再努力wz19 小时前
【Qt入门系列】第一个 Qt Widgets 程序:项目创建、UI 文件、Hello World、对象树与 qDebug 日志
java·c语言·开发语言·数据结构·c++·qt·ui