Java中接口不能继承抽象类,因二者语义不同:接口描述“能做什么”,抽象类描述“是什么”;抽象类可implements接口,类可extends一个抽象类并implements多个接口。

Java 中接口不能继承抽象类,也不能使用 extends 关键字去继承抽象类。
接口不能 extends 抽象类
接口和抽象类是两类不同语义的结构:
- 接口(
interface)描述“能做什么”(Can-do),只定义契约,不包含状态或实现细节(Java 8+ 允许 default/static 方法,但本质仍是行为契约); - 抽象类(
abstract class)描述“是什么”(Is-a),可含状态(字段)、构造器、具体方法和抽象方法,用于构建有共性基础的类层次。
因此,语法上不允许:
❌ 错误写法:interface MyInterface extends MyAbstractClass { ... }
编译器会直接报错:*interface cannot extend a class*
抽象类可以 implements 接口
抽象类作为类的一种,可以像普通类一样实现接口:
- 用
implements关键字,不是extends; - 可以实现多个接口(逗号分隔);
- 不必立即实现接口中的抽象方法——由其子类承担实现责任。
例如:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
立即学习“Java免费学习笔记(深入)”;
abstract class Animal implements Comparable<Animal>, Serializable {
public int compareTo(Animal other) { /* 可以提供默认实现 */ }
// Serializable 没有方法,无需实现
}类如何同时使用抽象类和接口
一个具体类只能 extends 一个抽象类,但可以 implements 多个接口:
- 这是 Java 实现“类层次单继承 + 行为多继承”的标准方式;
- 抽象类提供共享状态与部分实现,接口补充额外能力;
- 例如:
class Dog extends Animal implements Flyable, Runnable。
接口之间可以 extends
接口支持单继承或多继承其他接口(用 extends),但不能继承类:
-
interface Flyable extends Movable, Drawable { ... }✅ -
interface A extends Object { ... }❌(Object 是类,不是接口)

















