java类用implements关键字实现多个接口,须用英文逗号分隔接口名并实现所有抽象方法;若继承父类,extends必须在implements之前;default方法冲突需显式重写;接口设计应正交、小而专。

Java 类通过 implements 关键字实现多个接口,核心就一句话:**用英文逗号分隔接口名,且必须实现所有抽象方法**。
语法写法要规范
类声明时,在 class 后紧跟 implements,后面直接列出接口名,中间只用英文逗号(,)分隔,不能加 and、顿号、分号或空格以外的符号:
class Robot implements Flyable, CameraDevice, Chargeable { ... }- 错误写法:
class Robot implements Flyable & CameraDevice或implements Flyable、CameraDevice - 如果同时继承父类,
extends必须写在implements前面:class Drone extends AerialVehicle implements Flyable, Autonomous { ... }
必须实现所有抽象方法
每个被实现的接口中声明的 public abstract 方法(哪怕多个接口里有同名同参的方法),都必须在类中提供一个 public 修饰的具体实现:
- 例如
Flyable和Resetable都定义了void reset(),只需写一次public void reset() { ... } - 实现方法的访问权限只能是
public,不能是protected或包私有 - 若漏掉任一抽象方法,编译报错:
class X must either be declared abstract or implement abstract method Y in Z
处理 default 方法冲突
从 Java 8 开始,接口可含 default 方法。当多个接口提供签名完全相同的 default 方法时,编译器会拒绝通过:
- 必须在实现类中显式重写该方法(哪怕只是调用其中一个接口的默认实现)
- 例如:
InterfaceA.super.reset();或InterfaceB.super.reset(); - 静态方法(
static)不参与实现,不会冲突,只能通过接口名调用,如Flyable.log()
设计上注意正交与职责分离
多个接口不是堆砌出来的,而是为了表达对象不同维度的能力:
- 推荐小而专的接口,比如
Runnable、Serializable、Comparable<t></t> - 避免大而全的接口(如把飞行、拍照、充电全塞进一个
SmartDevice),否则被迫实现无意义方法 - 若某些接口总是一起出现,可考虑定义组合接口:
interface AdvancedDrone extends Flyable, CameraDevice, Autonomous { }
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











