extends 是 Java 中实现单继承的关键字,子类通过“class 子类名 extends 父类名”声明继承,可访问父类非 private 成员,构造器需显式或隐式调用 super(),重写方法应使用 @Override 注解。

extends 是 Java 中用于实现类继承的关键字,它让一个类(子类)可以复用另一个类(父类)的字段和方法,并支持多态与重写。核心规则是:Java 只支持单继承,即一个类只能直接继承一个父类,但可以通过接口实现多重行为抽象。
子类如何正确声明继承关系
使用 extends 时,子类定义语法为:class 子类名 extends 父类名。父类必须是已定义的、非 final 的类,且访问权限允许继承(如 public 或包内可见)。例如:
- class Dog extends Animal —— Dog 继承 Animal 类
- 不能写成 class Dog extends Animal implements Runnable(implements 要放在 extends 后面)
- 不能写成 class Dog extends Animal, Pet(Java 不允许多继承类)
继承后能访问哪些成员
子类自动获得父类中 非 private 的字段和方法(包括 protected、public 和默认包访问权限的成员),但访问受修饰符限制:
- public 成员:子类中可直接调用
- protected 成员:子类中可访问,即使在不同包中
- 默认(包私有)成员:仅当子类与父类在同一个包内才可访问
- private 成员:子类无法直接访问,但可通过父类提供的 public/protected 方法间接使用
构造器与 super() 的配合使用
子类构造器默认第一行会隐式调用 super()(无参父类构造器)。如果父类没有无参构造器,就必须显式调用 super(...) 传入对应参数,否则编译失败:
立即学习“Java免费学习笔记(深入)”;
- 父类有 Animal(String name),子类构造器中需写 super(name)
- 若忘记或写错参数类型/个数,编译器会报错:“constructor Animal in class Animal cannot be applied to given types”
- super() 必须是子类构造器的第一条语句
方法重写与 @Override 注解的作用
子类可通过定义同名、同参数、同返回类型的方法来重写父类的非 final 实例方法。建议加上 @Override 注解:
- 帮助编译器检查是否真正覆盖了父类方法(比如拼写错误、参数不一致时会报错)
- 提高代码可读性,明确表达设计意图
- 静态方法不能被“重写”,只能被“隐藏”;final 方法不能被重写










