类继承表达“是一个”关系,通过extends实现单继承,传递状态与行为;接口继承表达“能做什么”,通过implements支持多继承,定义行为契约。

Java中的接口继承与类继承在语义和使用场景上有本质区别。理解这两种继承模式的关键在于明确“是什么”与“能做什么”的差异。
类继承表达“是一个”关系
类继承通过extends关键字实现,强调的是类型之间的层级关系,即子类“是一个”父类的具体化。这种继承传递状态(字段)和行为(方法),并支持方法重写。
- 子类自动拥有父类的非私有成员(字段和方法)
- 允许重写父类方法以实现多态
- Java中类继承是单继承,一个类只能继承一个父类
- 构造器不被继承,但子类必须调用父类构造器(显式或隐式)
例如,Dog extends Animal 表示 Dog 是一种 Animal,可以继承动物的共性如 move()、eat() 等,并添加自身特性。
接口继承表达“具备某种能力”
接口继承通过implements关键字实现,描述的是对象的行为契约,即该类“能做什么”。接口只定义方法签名(Java 8 后可含默认方法和静态方法),不包含实例字段。
立即学习“Java免费学习笔记(深入)”;
- 接口中方法默认是 public abstract(除非是 default 或 static)
- 类可以实现多个接口,实现多重行为组合
- 接口之间可以互相继承,形成更复杂的能力集合
- 实现接口的类必须提供所有抽象方法的具体实现(除非是抽象类)
例如,一个类可以同时实现 Runnable 和 Serializable,表示它既能被线程执行,也能被序列化。
语义核心:角色 vs 实体
类继承关注的是实体本身的扩展,适合构建具有明确父子关系的对象体系;而接口继承关注的是功能职责的划分,适合解耦设计、提升灵活性。
举个例子:飞机和鸟都能飞,但它们不属于同一类继承结构。通过让两者都实现 Flyable 接口,就能统一处理“飞行”这一能力,而不强求它们共享同一个父类。
基本上就这些。接口继承侧重能力的声明与复用,类继承侧重属性和行为的延续与特化。合理结合两者,才能写出高内聚、低耦合的 Java 代码。










