implements声明类实现接口,要求必须public实现所有抽象方法,支持多接口实现以模拟多继承,未完全实现需声明为abstract或补全方法,注意默认方法冲突和泛型类型一致性。

implements 用来声明类实现某个接口
它不是定义新功能的语法,而是承诺:这个类必须提供接口中所有 public abstract 方法的具体实现。Java 不允许类直接继承多个类,但可以通过 implements 同时实现多个接口,这是实现“伪多继承”的关键机制。
不实现接口全部方法会导致编译错误
只要用了 implements,就必须覆盖接口里的每个抽象方法,否则编译器会报错:class X must either be declared abstract or implement abstract method Y() in Z。常见应对方式包括:
- 补全所有方法体(最常用)
- 把当前类声明为
abstract(适用于仅部分实现的基类) - 使用默认方法(
default)或静态方法(static)提前在接口中提供实现,它们不要求子类重写
接口方法默认是 public abstract,不能加 private 或 protected
在接口中声明方法时,即使省略 public abstract,编译器也会自动补上。所以你在实现类里写 private void doSomething() 是非法的——implements 要求的实现必须是 public 的。容易踩的坑有:
- 忘了加
public访问修饰符(编译报错:attempting to assign weaker access privileges) - 返回类型或参数签名与接口方法不一致(编译报错:method does not override or implement a method from a supertype)
- 误以为可以靠
implements继承接口里的字段——接口字段本质是public static final,只能访问,不能被“继承”修改
一个类可以 implements 多个接口,但顺序无关紧要
比如 class A implements Runnable, Comparable, Cloneable 是合法的。JVM 不关心接口列出的先后,只检查方法是否全部实现。不过要注意:
立即学习“Java免费学习笔记(深入)”;
- 如果两个接口有同名同签名的默认方法,必须在实现类中显式重写该方法,否则编译失败
- 接口之间可以互相
extends,此时子接口会继承父接口的所有抽象方法,实现类仍需一并实现 - 泛型接口(如
Comparable)在implements时必须指定具体类型或保持泛型参数一致,否则类型擦除后可能引发桥接方法问题










