implements是Java中用于类声明实现接口的关键字,要求类必须重写接口中所有public abstract方法,支持多接口实现但不支持多继承,且接口字段默认为public static final常量。

implements 用来声明类实现接口
Java 中 implements 是一个关键字,只用于类声明处,表示该类要**提供接口中所有抽象方法的具体实现**。它不是运行时行为,也不支持多继承,但可以同时实现多个接口,用英文逗号分隔。
常见错误是把 implements 和 extends 混用:类只能 extends 一个父类,但可以 implements 多个接口;接口之间用 extends,类实现接口才用 implements。
-
class Dog implements Animal, Runnable✅ 合法 -
class Dog extends Animal implements Runnable✅ 合法(先继承,后实现) -
class Dog implements Animal extends Mammal❌ 语法错误,extends必须在implements前
必须重写接口中所有 public abstract 方法
一旦类用了 implements,编译器会强制要求它实现接口里每个未被默认或静态修饰的方法。哪怕只漏一个,编译就失败,报错类似:Dog is not abstract and does not override abstract method speak() in Animal。
注意:从 Java 8 开始,接口可含 default 方法和 static 方法,这两类无需在实现类中重写。
立即学习“Java免费学习笔记(深入)”;
interface Animal {
void speak(); // 必须实现
default void sleep() { System.out.println("Zzz"); } // 可不重写
static void info() { System.out.println("Animal interface"); } // 不能被重写,只能通过接口名调用
}
接口方法签名必须严格匹配
实现类中方法的名称、参数列表(类型+顺序)、返回类型,必须与接口中声明的一致。返回类型支持协变(covariant return):若接口方法返回 Animal,实现类可返回其子类如 Dog,但不能反过来。
容易忽略的点:
- 访问修饰符只能是
public(即使接口里没写,也默认是public abstract) - 不能抛出比接口方法声明更宽泛的检查异常(checked exception)
- 不能减少
throws子句中的异常类型
接口中字段全是 public static final 常量
接口里定义的变量自动具有 public static final 修饰,无论是否显式写出。实现类可以直接通过接口名或实例访问,但不能修改——试图赋值会编译报错:cannot assign a value to final variable。
interface Config {
int MAX_RETRY = 3; // 等价于 public static final int MAX_RETRY = 3;
}
class Client implements Config {
void connect() {
System.out.println(MAX_RETRY); // ✅ 编译期常量,直接可见
// MAX_RETRY = 5; // ❌ 编译错误
}
}
接口本身不能有实例字段或构造器,所以 implements 不涉及状态继承,只约束行为契约。








