java类支持单继承但可实现多个接口,语法要求extends在implements前且仅一个,泛型中可约束类型兼具继承与多实现。

Java 中不能让一个类继承多个父类,但可以在继承一个父类的同时,实现多个接口,从而扩展出多重行为能力。这种写法既保留了单继承的清晰性,又通过接口补充了多维度的功能契约。
语法格式要规范
类声明中,extends 必须写在 implements 前面,且只能有一个 extends,但可以有多个 implements:
-
正确写法:
public class Duck extends Bird implements Flyable, Swimmable, Singable -
错误写法:
public class Duck implements Flyable, Swimmable extends Bird(顺序错) -
错误写法:
public class Duck extends Bird, Animal ...(不允许多继承)
方法实现要注意覆盖规则
当父类已有某方法、而接口也声明同名方法时,行为取决于具体情况:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
- 若父类已提供具体实现(非 abstract),子类可直接继承,无需重写——除非想改变逻辑
- 若接口中是抽象方法(Java 7 及以前),子类必须实现,哪怕父类没提供
- 若接口中是 default 方法,且父类或其它接口也有同签名 default 方法,子类必须显式重写该方法,否则编译失败
泛型约束中也能体现这种组合
在定义泛型类型时,可用 <t extends parent interfacea interfaceb></t> 表达“既是某类子类,又实现了多个接口”的约束:
- 第一个
extends后必须是类(或class类型) - 后续所有
&连接的都必须是接口 - 例如:
<t extends number comparable> & Serializable></t>是合法的
实际开发中的典型场景
比如一个网络请求工具类,可能这样设计:
- 继承
AbstractHttpClient(复用连接管理、超时配置等基础能力) - 实现
Retryable接口(支持重试策略) - 实现
Cancelable接口(支持中断正在执行的请求) - 实现
Loggable接口(统一日志输出规范)
这样,它既有父类封装的通用逻辑,又通过接口明确表达了可重试、可取消、可记录等多重职责。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










