继承是java复用代码的核心机制,子类通过extends获得父类非私有成员,支持方法重写、构造器链式调用,但需遵循“is-a”关系并优先考虑组合以避免紧耦合。

继承是 Java 中复用代码的核心机制,它让子类自动获得父类的属性和方法,从而避免重复编写相同逻辑。
通过继承提取公共属性和行为
当多个类具有相同字段或方法时,可将它们抽取到一个父类中。例如,Student 和 Teacher 都有 name、age 和 printInfo() 方法,就可以定义一个 Person 父类封装这些共性:
- 子类用 extends 继承父类,直接使用父类的非私有成员
- 避免在每个类里重复声明 name 和 age 字段
- 修改公共逻辑只需改动父类一处,所有子类自动生效
方法重写(Override)兼顾复用与定制
子类继承方法后,可根据自身需求重新定义行为,既保留父类结构,又支持差异化实现:
Java Linux版下载入口,提供 Oracle JDK 26.0.2 官方 Linux 安装包、Java 环境配置、JDBC 数据库连接和 Java 服务端开发相关信息。
- 用 @Override 注解明确标识重写,增强可读性和编译检查
- 调用 super.methodName() 可复用父类逻辑,再追加子类特有操作
- 例如 Student.printInfo() 先调用 super.printInfo() 输出基本信息,再打印学号
构造器链式调用减少初始化冗余
子类构造器默认不自动调用父类构造器,但可通过 super(...) 显式复用父类初始化逻辑:
- 避免在每个子类构造器中重复赋值公共字段
- 父类构造器集中处理通用初始化,如校验参数、设置默认状态
- 若父类只有带参构造器,子类必须显式调用 super(...),否则编译失败
合理设计继承层次,避免过度耦合
继承虽能减少重复,但滥用会导致类之间紧耦合、难以维护:
- 遵循“is-a”关系建模:只有当子类确实是父类的一种时才使用继承
- 优先考虑组合(has-a)替代继承,尤其当只是需要某类功能而非类型关系时
- 将可变行为抽象为接口或通过策略模式注入,比深度继承更灵活
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










