子类可继承父类public、protected及同包下的默认访问权限成员,private成员虽被继承但不可见不可用;构造方法不被继承,静态成员可继承但不能重写,final方法可继承但不能重写。

Java子类通过extends关键字继承父类的非私有属性和方法,但不能直接访问父类的private成员;继承的是声明可见性允许的部分,不是“全盘复制”。
哪些属性和方法能被继承?
子类可继承父类中public和protected修饰的字段与方法;默认(包级)访问权限的成员在同包下也可继承;而private成员虽属于父类内部结构,但子类无法直接访问或调用——它被继承了,只是不可见、不可用。
- 构造方法不被继承(子类需用
super()显式调用) - 静态成员(
static)可被继承,但不能被重写,只能被隐藏 - final方法可被继承,但不能被重写
如何正确访问父类成员?
子类中可以直接使用父类的public/protected字段和方法,无需额外操作。若子类定义了同名字段,会形成“字段隐藏”,此时可用super.字段名明确访问父类版本。
分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
- 例如:
super.name强制读取父类的name字段 - 调用被重写的方法时,
super.methodName()可执行父类原始逻辑 - 子类构造器第一行通常要写
super(...)来初始化父类状态
常见误区提醒
很多人误以为“继承=拥有全部代码”,其实关键在访问控制和语义隔离:
立即学习“Java免费学习笔记(深入)”;
-
private属性不是“没继承”,而是继承后自动屏蔽——JVM仍为其分配空间,只是语法层禁止访问 - 子类新增同名字段不会覆盖父类字段,而是并存;访问时遵循就近原则(本类 > 父类)
- 父类方法若被
final修饰,子类不能重写,但可以继承并直接调用
一个简洁验证示例
运行这段代码就能直观看到继承效果:
class Animal {protected String name = "动物";
private int age = 5;
public void speak() { System.out.println(name + "发声"); }
}
class Dog extends Animal {
public void show() {
System.out.println(name); // ✅ 可访问 protected 字段
// System.out.println(age); // ❌ 编译报错:无法访问 private
speak(); // ✅ 继承并调用 public 方法
}
}

















