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 另一个接口。

更多推荐