extends用于类继承,实现代码复用和“is-a”关系;java不支持多继承,子类通过super()调用父类构造器,可重写非private/final/static方法,需遵守访问权限不更严格等规则。

Java 中 extends 关键字用于让一个类继承另一个类的非私有成员(字段和方法),从而实现代码复用和建立类之间的“is-a”关系。
继承的基本语法和规则
子类通过 extends 关键字声明继承父类,且 Java 不支持多继承(一个类只能直接继承一个父类):
- 语法格式:
class 子类名 extends 父类名 { ... } - 构造器不会被继承,但子类构造器默认调用父类无参构造器(可通过
super()显式调用) - 父类的
private成员不可直接访问,但可通过公共方法间接使用 - 子类可重写(override)父类的非
final、非private、非static方法
继承中的构造器调用
子类实例化时,必须确保父类部分被正确初始化。若父类没有无参构造器,子类需显式调用 super(...):
- 若父类只有带参构造器,子类构造器第一行必须是
super(参数) -
super()或this()必须出现在构造器首行,二者不能共存 - 示例:父类
Person(String name)→ 子类构造器中写super("Alice")
方法重写与访问控制
子类可通过重写父类方法改变行为,但需遵守“协变返回类型”和访问权限不更严格的原则:
- 重写方法签名(名称、参数列表)必须完全一致
- 子类方法的访问修饰符不能比父类更严格(如父类是
protected,子类不能是private) - 可使用
@Override注解提高可读性并帮助编译器检查 - 若需在重写方法中调用父类版本,用
super.方法名()
继承的典型应用场景
适合用于表达明确的层级关系,比如不同类型的员工、图形形状、设备驱动等:
- 定义通用父类(如
Animal含name和eat()) - 子类(如
Dog、Cat)继承后添加特有属性(barkVolume)或重写通用行为(eat()细节不同) - 配合多态使用:用父类引用指向子类对象,运行时动态调用实际类型的方法
继承是面向对象的基础机制,合理使用能提升代码结构清晰度和可维护性,但应避免为复用而强行继承——优先考虑组合(has-a)而非继承(is-a)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











