Java继承通过extends实现代码复用与功能扩展:子类自动获得父类非私有成员,支持添加新成员或重写方法;需注意private不可继承、构造器须显式调用super、单继承限制及避免过度继承,结合多态提升系统扩展性。

Java 中继承通过 extends 关键字建立父子类关系,让子类直接获得父类的非私有成员(字段和方法),从而天然支持代码复用;同时允许添加新成员或重写已有方法,实现功能扩展。核心不在“复制”,而在“结构化共享”与“可控增强”。
继承如何实现代码复用
复用不是拷贝代码,而是让子类对象自动具备父类已定义的能力:
- 子类可直接调用父类的 public 和 protected 方法,无需重新编写。例如 Animal 类定义了
eat(),Dog 和 Cat 继承后都可直接使用。 - 父类中已封装的逻辑(如输入校验、状态初始化)被所有子类共用,修改一处,所有子类受益。
- 避免为相似类重复声明相同字段(如
name、age),统一在父类中定义并由子类继承。
继承如何支持功能扩展
子类在复用基础上,通过新增和覆盖构建差异化行为:
- 添加专属字段和方法:Dog 类可新增
breed字段和bark()方法,Cat 类可新增isIndoor和meow(),互不影响。 - 重写(override)父类方法:用
@Override修饰eat(),使 Dog 吃骨头、Cat 吃鱼,行为不同但接口一致。 - 通过
super在重写中复用父逻辑:比如先调用super.eat(),再追加清理动作,实现“增强式扩展”。
继承中的关键约束与注意事项
复用与扩展的有效性依赖于合理设计:
立即学习“Java免费学习笔记(深入)”;
- private 成员不可继承:父类私有字段和方法对子类不可见,需通过 public/protected 方法间接访问。
-
构造器不继承,但必须显式调用:子类构造器第一行默认或手动写
super(...),确保父类状态正确初始化。 -
单继承限制:一个类只能 extends 一个父类,避免菱形继承歧义;多角色能力应通过
implements 接口补足。 - 过度继承易破坏封装:若只为复用一两个方法就继承,往往不如组合(has-a)或静态工具类清晰。
继承与多态协同提升扩展性
继承本身提供结构基础,配合多态才能真正释放扩展潜力:
- 父类引用可指向任意子类对象(如
Animal a = new Dog();),调用a.eat()自动执行 Dog 的版本。 - 新增子类(如 Bird)无需修改原有调用逻辑,只要它继承 Animal 并重写
eat(),就能无缝融入现有系统。 - 集合或参数类型使用父类(如
List<Animal>),天然容纳未来所有子类实例,降低后续维护成本。


















