java继承通过extends实现单继承,子类复用父类非私有成员,用重写定制行为,结合抽象类与模板方法提升复用安全性与灵活性。

Java 中通过继承实现代码模块化复用,核心是让子类自动获得父类的非私有成员(字段、方法),从而避免重复编写通用逻辑,把共性提取到父类,差异保留在子类。
用 extends 声明继承关系
子类通过 extends 关键字继承父类,只能单继承(一个子类只能有一个直接父类)。
- 父类中 public 和 protected 成员可直接被子类访问
- default(包访问) 成员在同包下可访问
- private 成员不可继承,但可通过 public/protected 方法间接使用
抽取公共行为到父类
识别多个类共有的属性和操作,封装进父类。例如:不同动物都有名字、年龄、吃和睡的行为。
<font color="#888">class Animal {<br> protected String name;<br> protected int age;<br><br> public Animal(String name, int age) {<br> this.name = name;<br> this.age = age;<br> }<br><br> public void eat() { System.out.println(name + " 在吃东西"); }<br> public void sleep() { System.out.println(name + " 在睡觉"); }<br>}</font>
子类复用这些字段和方法,无需重写:
<font color="#888">class Dog extends Animal {<br> public Dog(String name, int age) {<br> super(name, age); // 调用父类构造器<br> }<br><br> public void bark() { System.out.println(name + " 汪汪叫"); }<br>}</font>
用方法重写(Override)定制子类行为
当子类需要修改父类方法的实现逻辑时,用 @Override 注解重写该方法,保持方法签名一致。
- 父类中用 final 修饰的方法不能被重写
- 建议重写时调用 super.methodName() 复用父类逻辑(如日志、校验等)
- 多态依赖重写:Animal a = new Dog(); a.eat() 会执行 Dog 的 eat(如果重写了)
配合抽象类和模板方法提升复用质量
若父类中某些步骤固定、某些步骤由子类决定,可用抽象类 + 模板方法模式:
<font color="#888">abstract class DataProcessor {<br> // 模板方法:定义流程骨架<br> public final void process() {<br> loadData();<br> validate();<br> transform();<br> save();<br> }<br><br> protected abstract void loadData();<br> protected void validate() { /* 默认校验逻辑 */ }<br> protected abstract void transform();<br> protected abstract void save();<br>}</font>
子类只关注自己负责的环节,不破坏整体流程,复用更安全、更灵活。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











