Java中extends用于继承,子类获得父类public/protected成员并可新增、重写、组合来定制行为;需用super调用父类构造器和成员,避免字段遮蔽。

Java 中用 extends 拓展子类功能,核心不是“加东西”,而是“站在父类肩膀上定制行为”——继承提供基础能力,子类通过新增、重写、组合等方式实现差异化扩展。
用 extends 声明继承关系,获得父类可用成员
子类通过 class 子类名 extends 父类名 明确继承链。一旦声明,子类自动获得父类的 public 和 protected 字段与方法(private 不可访问,构造器不被继承)。
- 同包内还可访问父类默认(package-private)成员
- 父类字段和方法就像写在子类里一样,可直接调用,无需重复定义
- 例如:父类定义了
protected String name;和public void printInfo(),子类可直接使用this.name或调用printInfo()
添加子类特有功能:字段、方法、构造器
继承后,子类可在自身结构中自由补充专属内容,这是拓展功能最直接的方式。
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
- 声明独有的字段(如
String major;在 Student 类中) - 定义特有方法(如
void teach()在 Teacher 类中) - 编写子类构造器,并用
super(...)初始化父类部分(必须是第一行)
重写父类方法,改变或增强行为逻辑
当父类通用逻辑不完全适用子类时,可通过 @Override 重写方法,在保留签名的前提下替换或叠加实现。
立即学习“Java免费学习笔记(深入)”;
- 重写必须保持方法名、参数列表、返回类型兼容(支持协变返回)
- 子类方法访问权限不能比父类更严格(如父类是
protected,子类不能是private) - 想复用父类逻辑再加工?用
super.方法名()显式调用,比如校验后保存、记录日志再执行
注意字段遮蔽与 super 的精准使用
子类若定义与父类同名字段,会导致遮蔽(hiding)而非覆盖——两者独立存在,访问结果取决于引用类型。这容易引发逻辑错乱。
- 用
this.name访问子类字段,super.name访问父类字段(前提是父类字段非 private) - 避免在子类中随意重名字段;优先通过 protected 字段 + 公共 getter/setter 控制访问
- 构造器中务必用
super(...)初始化父类状态,否则编译失败

















