子类自动继承父类的public、protected和包级非私有成员,通过extends实现;访问受权限控制,private成员不可继承;字段隐藏与方法重写本质不同,super可访问被隐藏的父类字段。

子类通过继承机制自动获得父类的非私有成员(即 public、protected 和包级(默认)访问权限的字段与方法),无需显式声明或复制代码。
继承的基本规则
Java 中使用 extends 关键字建立继承关系。子类在编译时就确定可访问哪些父类成员:
- public 成员:任何包中都可直接访问
- protected 成员:同包内或不同包的子类中均可访问
- 默认(包级)成员:仅限于同一包内的子类访问
- private 成员:不会被继承,子类不可见、不可访问
子类如何使用父类非私有成员
继承后,子类对象天然拥有这些成员,使用方式与自身定义的成员一致:
- 可在子类方法中直接调用父类的 public/protected 方法,如 super.methodName() 或直接写 methodName()
- 可直接读写父类的非私有字段(除非被子类同名字段隐藏)
- 构造子类实例时,会隐式或显式调用父类构造器,完成父类部分的初始化
注意字段隐藏与方法重写区别
子类定义同名字段不会覆盖父类字段,而是造成“隐藏”;而重写(override)父类的非私有实例方法才是真正的多态行为:
- 字段隐藏:子类和父类各保留一份,通过引用类型决定访问哪个字段
- 方法重写:子类提供新实现,运行时根据实际对象类型调用对应版本
- 要访问被隐藏的父类字段,可用 super.fieldName
一个简单例子
假设父类 Animal 有 protected String name 和 public void eat(),子类 Dog 继承它:
- Dog 实例可以直接使用 name 字段和 eat() 方法
- Dog 可以新增自己的方法,如 bark()
- 若 Dog 也定义了 name,则原父类字段被隐藏,但仍可通过 super.name 访问
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











