99. Java 继承(Inheritance)
文章目录
- 99. Java 继承(Inheritance)
- 1. 什么是继承?
- 📌 继承的基本概念
- 2. 继承示例
- 🎭` Bicycle`(自行车)类
- 🚵` MountainBike`(山地自行车)类
- 3. 继承的关键点
- 🔹 1. 使用 `super` 关键字
- 🔹 2. 方法重写(Overriding)
- 🔹 3. 访问修饰符的影响
- 🔹 4. `final` 关键字
- 4. 继承的实际应用
- 🌟 示例:使用继承创建不同类型的车辆
- 5. 总结
99. Java 继承(Inheritance)
1. 什么是继承?
在 Java
语言中,继承是一种允许类从其他类派生并复用其字段和方法的机制。
📌 继承的基本概念
- 子类(
Subclass
):从另一个类派生的类(又称派生类、扩展类)。 - 超类(
Superclass
):被继承的类(又称基类或父类)。 - 单继承(
Single Inheritance
):Java
仅支持单继承,即每个类只能直接继承一个超类。 Object
类:所有类的祖先,未指定父类时,默认继承自Object
。
继承的好处:
- 代码复用 ✅ 避免重复编写相同代码。
- 层次结构 🚀 建立逻辑清晰的类体系。
- 可扩展性 🎯 通过子类扩展父类功能。
2. 继承示例
🎭 Bicycle
(自行车)类
public class Bicycle {// Bicycle 类包含三个字段public int cadence;public int gear;public int speed;// 构造方法public Bicycle(int startCadence, int startSpeed, int startGear) {gear = startGear;cadence = startCadence;speed = startSpeed;}// 调整踏频public void setCadence(int newValue) {cadence = newValue;}// 调整档位public void setGear(int newValue) {gear = newValue;}// 减速public void applyBrake(int decrement) {speed -= decrement;}// 加速public void speedUp(int increment) {speed += increment;}
}
🚵 MountainBike
(山地自行车)类
MountainBike
继承 Bicycle
,并增加了 seatHeight
字段和 setHeight()
方法。
public class MountainBike extends Bicycle {// 新增字段:座椅高度public int seatHeight;// 构造方法,调用父类构造方法public MountainBike(int startHeight, int startCadence, int startSpeed, int startGear) {super(startCadence, startSpeed, startGear);seatHeight = startHeight;}// 设置座椅高度public void setHeight(int newValue) {seatHeight = newValue;}
}
3. 继承的关键点
🔹 1. 使用 super
关键字
super
关键字用于调用父类的构造方法或方法。- 在子类构造方法中,
super(...)
必须是第一行。
public MountainBike(int startHeight, int startCadence, int startSpeed, int startGear) {super(startCadence, startSpeed, startGear); // 调用父类构造方法seatHeight = startHeight;
}
🔹 2. 方法重写(Overriding)
- 子类可以重写(override)父类的方法。
- 使用
@Override
注解可以避免拼写错误。
@Override
public void speedUp(int increment) {speed += increment * 2; // 速度加倍
}
🔹 3. 访问修饰符的影响
修饰符 | 同一类 | 同一包 | 子类 | 其他包 |
---|---|---|---|---|
public | ✅ | ✅ | ✅ | ✅ |
protected | ✅ | ✅ | ✅ | ❌ |
default (无修饰符) | ✅ | ✅ | ❌(同包子类可访问) | ❌ |
private | ✅ | ❌ | ❌ | ❌ |
🔹 4. final
关键字
final
修饰类:不能被继承。final
修饰方法:不能被子类重写。
final class RoadBike extends Bicycle { }
4. 继承的实际应用
🌟 示例:使用继承创建不同类型的车辆
// 父类:Vehicle(交通工具)
class Vehicle {public void move() {System.out.println("交通工具正在移动...");}
}// 子类:Car(汽车)
class Car extends Vehicle {@Overridepublic void move() {System.out.println("汽车正在行驶...");}
}// 子类:Bike(自行车)
class Bike extends Vehicle {@Overridepublic void move() {System.out.println("自行车正在骑行...");}
}public class TestInheritance {public static void main(String[] args) {Vehicle v1 = new Car();Vehicle v2 = new Bike();v1.move(); // 输出:汽车正在行驶...v2.move(); // 输出:自行车正在骑行...}
}
5. 总结
✅ 继承让代码更清晰、可复用性更高。 🚀 使用 super
关键字调用父类构造方法或方法。 🎯 方法重写可以定制子类行为,但要注意访问修饰符的作用。 ⚠ final
关键字可以防止继承和重写,合理使用。
通过继承,我们可以构建更有组织、可扩展的 Java 应用程序,减少代码重复,让代码更易于维护!💡