继承通过extends实现子类复用父类非私有成员,如Car继承Vehicle获得brand和start();合理设计父类提取共性,使用protected和抽象方法增强复用与一致性;子类可重写方法并用super调用父类逻辑,实现多态;但应避免过度继承导致高耦合,优先考虑“is-a”关系,推荐组合替代深度继承,保持类易扩展且低耦合。

在Java中,继承是实现代码复用的重要机制之一。通过让子类继承父类,可以共享父类的属性和方法,避免重复编写相同的代码,提升开发效率和程序可维护性。
理解继承的基本语法
使用extends关键字可以让一个类继承另一个类。子类自动拥有父类的非私有成员(字段和方法)。
示例:
public class Vehicle {
protected String brand;
public void start() {
System.out.println("车辆启动");
}
}
public class Car extends Vehicle {
private int doors;
public void honk() {
System.out.println("喇叭响了");
}
}
Car类继承Vehicle后,可以直接使用brand字段和start()方法,无需重新定义。
合理设计父类以提高复用性
为了有效复用,父类应封装共有的行为和状态。将多个子类中重复出现的代码提取到父类中。
立即学习“Java免费学习笔记(深入)”;
- 把通用字段(如id、name、createTime)放在基类中
- 公共方法如toString()、equals()、日志记录等可在父类实现
- 使用protected修饰符允许子类访问,同时保持封装性
- 定义抽象方法强制子类实现特定逻辑,提升结构一致性
利用方法重写扩展功能
子类可以在继承的基础上修改或增强父类行为,实现多态。
例如:
@Override
public void start() {
System.out.println("汽车打火启动");
super.start(); // 调用父类原有逻辑
}
这样既保留了通用逻辑,又实现了个性化处理。调用super关键字可复用父类代码,避免重复。
注意继承使用的边界
虽然继承能复用代码,但过度使用会导致类之间耦合度过高。
- 优先考虑“is-a”关系是否成立,避免为复用而强行继承
- 当只是需要某些功能时,组合往往比继承更灵活
- 避免多层深度继承,增加理解和维护难度
- 尽量将父类设计为可扩展但不易被破坏的形式(如使用final防止误重写)
基本上就这些。掌握好继承的使用方式,能让代码更简洁清晰,关键是把握好复用与解耦之间的平衡。










