当前位置: 首页 > java >正文

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 InheritanceJava 仅支持单继承,即每个类只能直接继承一个超类。
  • 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 应用程序,减少代码重复,让代码更易于维护!💡

http://www.xdnf.cn/news/12779.html

相关文章:

  • 【Java学习笔记】日期类
  • Selenium4+Python的web自动化测试框架
  • STM32的DMA简介
  • 【面试题】如何保证MQ的消息不丢失、不重复
  • 免费批量PDF转Word工具
  • Java安全点safepoint
  • Java 企业项目中的线程管理策略
  • 四.抽象工厂模式
  • opencv学习笔记2:卷积、均值滤波、中值滤波
  • C语言指针与数组sizeof运算深度解析:从笔试题到内存原理
  • 数学建模期末速成 主成分分析的基本步骤
  • 什么是 Ansible 主机和组变量
  • 如何优化React Native应用以适配HarmonyOS5?
  • python打卡训练营打卡记录day48
  • VLM引导的矢量草图生成AutoSketch
  • 数据库入门:从原理到应用
  • Windows之官方Sysinternals工具集
  • ubuntu 系统分区注意事项
  • 36 C 语言内存操作函数详解:memset、memcpy、memccpy、memmove、memcmp、memchr
  • 开启二进制日志 MySQL显示关闭,关闭二进制日志 MySQL恢复正常
  • 全球人工智能技术大会(GAITC 2025):技术前沿与产业融合的深度交响
  • Prompt工程学习之思维树(TOT)
  • C++课设:从零开始打造影院订票系统
  • .net 可以调试的Windows服务框架Topshelf
  • ClickHouse 25.3 json列类型使用示例
  • 基于自适应虚拟谐波阬的光储VSG并网电流谐波抑制模型
  • 归并排序:分治思想的高效排序
  • UDP 与 TCP 的区别是什么?
  • CppCon 2015 学习:Memory and C++ debugging at Electronic Arts
  • day6 cpp:c中处理字符串,c++string