Java 接口 extends与 implements总结
·
1. 基本规则
- 类继承类:
class B extends A
单继承,子类继承父类的成员与行为。 - 类实现接口:
class C implements I
类为接口中的抽象方法提供具体实现。 - 接口继承接口:
interface J extends I
子接口继承父接口的所有抽象方法和默认方法,并可声明新的方法。 - 接口不能实现接口:
interface J implements I❌ 不允许
因为接口不提供方法体,不存在“实现”的概念。
2. 为什么接口之间用 extends?
- 语义上正确:接口只是契约,不能“实现”另一个契约,只能继承它的定义。
- 代码层面:
extends表示子接口在父接口的契约基础上进行扩展。 - 设计原则:接口继承保证了“任何实现子接口的类,也必须实现父接口的所有方法”。
引用社区观点:
“An interface is a contract, not an implementation. That’s why interfaces extend other interfaces, they don’t implement them.”
(来自 StackOverflow)
3. 示例
接口继承接口
public interface Animal {
void eat();
}
public interface Pet extends Animal {
void play();
}
类实现接口
public class Dog implements Pet {
@Override
public void eat() { ... }
@Override
public void play() { ... }
}
Pet继承了Animal的方法eat()。Dog实现Pet,必须实现eat()和play()。
4. 优势
- 解耦:接口继承让契约层次清晰,调用者只依赖抽象。
- 扩展性:可以在子接口中扩展父接口的功能。
- 灵活性:类可以一次性实现多个接口,而接口本身可以多继承。
5. 对比表
| 关系 | 关键字 | 含义 |
|---|---|---|
| 类继承类 | extends |
子类继承父类的实现(单继承) |
| 类实现接口 | implements |
类提供接口方法的具体实现 |
| 接口继承接口 | extends |
子接口继承父接口的契约(可多继承) |
| 接口实现接口(非法写法) | implements |
❌ 不允许 |
✅ 一句话记忆:
接口之间用
extends,类实现接口用implements;接口永远不会implements另一个接口。
更多推荐



所有评论(0)