You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何LinkedList<E>未实现isEmpty()方法?接口允许多继承吗?

嘿,这两个问题都挺典型的,我来给你讲明白~

为什么LinkedList没有直接实现isEmpty()方法?

其实它不需要自己实现,因为继承链已经帮它搞定了!你看LinkedList继承自AbstractSequentialList,而AbstractSequentialList又继承了AbstractList——在AbstractList里已经实现了isEmpty()方法:

public boolean isEmpty() {
    return size() == 0;
}

而LinkedList自己重写了size()方法(它内部用变量直接维护元素数量,效率很高),所以当调用LinkedList的isEmpty()时,实际上是调用了AbstractList里的实现,再联动到LinkedList自己的size(),完全满足需求,没必要重复造轮子。

接口是否允许继承多个接口?

必须可以!Java里接口是支持多继承的,和类的单继承规则完全不同。你看LinkedList实现的List<E>和Deque<E>,其实Deque<E>本身也继承了Queue<E>和Collection<E>呢。

举个简单的例子,你可以这样定义一个继承多个接口的新接口:

public interface MyMultiInterface extends List<String>, Runnable, Serializable {
    // 自定义方法
}

之所以接口能多继承,是因为接口原本只有方法声明(后来新增的默认方法、静态方法也有明确的冲突解决规则),不会像类那样出现成员变量或者方法实现的冲突问题,所以完全支持多继承。

内容的提问来源于stack exchange,提问作者Hadean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:24:54