extends 是 Java 中实现单继承的关键字,子类通过它复用父类非 private 成员,支持方法重写与多态;构造器不继承但默认调用 super();访问控制决定继承可见性;应遵循 is-a 原则,慎用继承,优先考虑组合。

extends 是 Java 中用于建立类继承关系的关键字,它让一个类(子类)可以复用另一个类(父类)的字段和方法,并支持方法重写、多态等面向对象特性。
基本语法与使用方式
子类通过 extends 关键字声明继承自某个父类,格式为:class 子类名 extends 父类名。Java 只支持单继承,即一个类只能直接继承一个父类。
- 父类中被 private 修饰的成员不能被子类直接访问(但可通过 public 方法间接使用)
- 构造方法不会被继承,但子类构造器默认会先调用 super()(父类无参构造),若父类没有无参构造,需显式调用 super(参数)
- 子类可使用 super.成员名 访问被子类同名成员隐藏的父类成员
继承中的方法重写(Override)
子类可以重写父类中非 private、非 static、非 final 的实例方法,实现行为定制。重写时方法签名(名称、参数列表、返回类型)必须一致,访问权限不能更严格。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 建议在重写方法上添加 @Override 注解,便于编译器检查和提高可读性
- 重写不改变方法调用的动态绑定本质:运行时根据实际对象类型决定调用哪个版本的方法
- 例如:父类 Animal 有 void speak(),子类 Dog 可重写为输出 "汪汪!"
继承与访问控制的关系
继承能否访问父类成员,取决于父类成员的访问修饰符:
立即学习“Java免费学习笔记(深入)”;
- public:任何地方都可访问,子类自然可继承并使用
- protected:同包内或不同包的子类中均可访问,适合设计为“可被继承扩展”的成员
- 默认(包访问):仅限同包内的子类可访问;跨包子类无法访问
- private:仅限本类内部访问,子类不可见,也不属于继承内容
继承不是万能的:注意设计原则
继承表达的是 “is-a” 关系(如 Dog is-a Animal),应谨慎使用。过度继承容易导致耦合过强、维护困难。
- 优先考虑组合(has-a)而非继承,尤其当只是需要复用功能而非语义上的归属关系时
- 将父类中可能被重写的逻辑设计为 protected 或提供模板方法(template method)模式
- 必要时用 final class 防止被继承,或 final 方法 防止被重写,提升安全性

















