子类能继承父类的public、protected及同包默认访问权限的成员变量和方法,不能继承private成员和构造方法;构造方法需通过super()显式或隐式调用,同名成员遵循遮蔽(属性)或重写(实例方法)规则。

子类通过 extends 关键字声明继承关系后,会自动获得父类的非私有成员(即 public、protected 和默认(包级)访问权限)的属性和方法,但不包括 private 成员。
哪些属性和方法能被继承?
子类能直接使用父类中满足以下条件的成员:
- 所有 public 属性和方法(跨包可用)
- 所有 protected 属性和方法(同包或子类可用)
- 同包内定义的默认(无修饰符)属性和方法
- 不能继承 private 成员:它们仅在父类内部可见;子类无法直接访问,但可通过父类提供的 public/protected getter/setter 间接操作
构造方法怎么处理?
构造方法不会被继承,但子类必须显式或隐式调用父类构造方法来完成初始化:
将后端 Java 接口文档转换为前端 TypeScript 类型定义(interface / type)。输入:飞书文档、Spring Boot 接口文档、Swagger/OpenAPI、手写 API 文档等。输出:包含请求参数与响应结果的 .md 文件,含完整 JSDoc 注释。触发关键词:Java 转 TS、接口转换、生成前端类型、接口文档转 TypeScript、DTO/VO/BO 转 interface、后端文档转前端类型、生成接口类型、类型定义生成。
- 若父类有无参构造,且子类未写构造方法,JVM 会自动插入 super()
- 若父类只有带参构造,子类构造方法第一行必须写 super(参数),否则编译失败
- 子类自己的字段应在 super() 调用之后初始化,确保父类部分先就绪
同名成员冲突时怎么办?
当子类定义了与父类同名的属性或方法时,需注意区分:
立即学习“Java免费学习笔记(深入)”;
- 属性同名:子类属性会“遮蔽”父类属性(不是覆盖),此时用 super.属性名 明确访问父类版本
- 方法同名且签名一致:属于重写(Override),子类方法替换父类行为;若想复用父类逻辑,可在方法内用 super.方法名()
- static 方法同名:属于隐藏(Hide),不是重写;调用取决于引用类型,而非实际对象类型
继承的实际效果体现在内存和调用上
每个子类对象在堆中包含两部分数据:
- 从父类继承的字段(按继承链逐层叠加)
- 子类自己声明的字段
- 方法区中,实例方法按重写规则动态绑定,而静态方法和字段访问由编译时类型决定

















