继承通过extends实现子类复用父类成员,遵循is-a原则,子类可重写方法或调用super初始化,建议避免深层继承,优先组合。

在Java中,继承是面向对象编程(OOP)的核心特性之一,它允许一个类复用另一个类的字段和方法,从而实现代码的重用和结构的清晰。通过继承,子类可以获取父类的功能,并在此基础上进行扩展或修改。
继承的基本语法与使用
Java中使用extends关键字来实现继承。一个子类可以继承一个父类,但Java不支持多继承(即一个类不能同时继承多个类)。
示例:定义一个父类Person:
class Person {
protected String name;
public void eat() {
System.out.println(name + " 在吃饭");
}
}
定义一个子类Student继承Person:
立即学习“Java免费学习笔记(深入)”;
class Student extends Person {
private int studentId;
public void study() {
System.out.println(name + " 正在学习");
}
}
Student类自动拥有name字段和eat()方法,无需重复编写。
方法复用的实现方式
继承带来的最大好处就是方法的复用。子类可以直接使用父类中定义的方法,也可以根据需要进行重写(override)。
- 直接调用:子类对象可直接使用未被重写的父类方法
- 方法重写:使用@Override注解在子类中重新定义父类方法,实现不同行为
- super关键字:子类可通过super调用父类的方法或构造器
@Override
public void eat() {
super.eat(); // 调用父类原有逻辑
System.out.println("学生吃营养餐");
}
这样既保留了原有功能,又增加了新的行为。
构造器的继承与初始化
子类不会自动继承父类的构造器,但必须通过super()调用父类构造器来完成初始化。
如果父类有带参数的构造器,子类需显式调用:
class Student extends Person {
private int studentId;
public Student(String name, int id) {
super(name); // 调用父类构造器
this.studentId = id;
}
}
确保对象层级的完整初始化,是正确使用继承的重要环节。
设计建议与注意事项
合理使用继承能提升代码质量,但也需注意以下几点:
- 遵循“is-a”关系原则:Student is a Person,符合逻辑才应继承
- 避免过度继承:深层继承链会增加复杂性,优先考虑组合而非继承
- 保护访问控制:合理使用private、protected、public控制成员可见性
- 善用final防止不希望被重写的类或方法
基本上就这些。掌握好继承机制,能让你写出更简洁、可维护的Java代码。关键是理解何时该用,以及如何保持结构清晰。










