精通 Java 继承:以 Vehicles 示例为例 #java #inheritance #OOP #coding #tutorial
备注: 本文章由 AI 生成。
目录
1. 介绍 ……………………………………. 第 1 页
2. 理解 Java 继承 …………………………… 第 3 页
2.1 面向对象概念与继承基础
2.2 继承的优缺点
3. Vehicles 层次结构 ……………………….. 第 7 页
3.1 基本 Vehicle class 概览
3.2 派生类: Truck, Car, and Bike
3.3 比较表:独特与共有特性
4. 代码解析与解释 …………………………. 第 11 页
4.1 从 Vehicle class 继承
4.2 带有解释的详细代码示例
4.3 预期输出
5. 结论与进一步阅读 ……………………….. 第 17 页
1. 介绍
继承是 Java 面向对象编程 (OOP) 的基石。它允许开发者创建一个新的 class (子类),以重用、扩展和修改在另一个 class (父类) 中定义的行为。
在本指南中,我们将通过基于车辆的现实示例演示如何实现继承,展示如何重用共有属性以及如何引入专用特性。
关键要点:
• 在 parent class 中一次性组织共有属性和行为。
• 根据特定需求,在 child classes 中扩展或重写功能。
• 提高相似对象之间的代码重用性和可维护性。
下方为各类车辆关键数据范围及属性的表格表示:
比较表:车辆特性
特性 | Vehicle (Base) | Car | Truck | Bike |
---|---|---|---|---|
Engine | 是 | 是 | 是 | 是 (if public) |
Wheel | 是 | 是 | 是 | 是 |
Seat | 是 | 是 | 是 | N/A |
Fuel Tank | 是 | 是 | 是 | N/A |
Lights | 是 | 是 | 是 | N/A |
Steering | N/A | 是 | 是 | 否 |
Music System | N/A | 是 | Optional | 否 |
Air Conditioner | N/A | 是 | Optional | N/A |
Entertainment | N/A | 是 | N/A | N/A |
Additional | N/A | Fridge (*) | Container | Handle |
(*) 在某些高级配置中,Car 可能提供迷你冰箱。
何时使用继承?
• 在 parent class 中一次性组织共有属性和行为。
• 根据特定需求,在 child classes 中扩展或重写功能。
• 提高相似对象之间的代码重用性和可维护性。
2. 理解 Java 继承
2.1 面向对象概念与继承基础
继承使得一个 class 能够获得另一个 class 的属性和方法。
在我们的示例中,Vehicle class 定义了在所有车辆类型中共享的共有属性,如 engine、wheel、seats、fuel tank 和 lights。
2.2 继承的优缺点
优点:
– 代码重用和组织
– 简化维护
– 共有行为的逻辑分组
缺点:
– 如果管理不当,可能导致代码耦合过紧
– 过度使用可能导致复杂的 class 层次结构
3. Vehicles 层次结构
3.1 基本 Vehicle class 概览
Vehicle class 作为父 class,包含了每个车辆应具备的默认属性(例如,engine type, wheel)。所有扩展的类—Truck, Car, and Bike—都会自动获取这些属性。
3.2 派生类: Truck, Car, and Bike
• Truck 和 Car classes 继承自 Vehicle class,并添加或修改各自的属性,例如 trucks 的 container 和 cars 的 entertainment systems。
• 虽然 Bike class 相对简单,但它也扩展了 Vehicle,从而可以访问基本属性(例如 engine),同时引入了其独特的属性:handle.
3.3 Vehicles 继承层次结构示意图
1 2 3 4 5 6 7 8 |
Vehicle (Base Class) │ ┌─────────────┼─────────────┐ │ │ │ Truck Car Bike (独特的: Container, (独特的: Entertainment, Power Steering) Air Conditioner) (独特的: Handle, Limited functionalities; no steering) |
4. 代码解析与解释
4.1 从 Vehicle class 继承
下面是一个示例,展示了 Bike class 如何扩展 Vehicle class 的共有属性。注意,最初 Bike class 中的 handle variable 被声明为 private,后来改为 public 以便在我们的演示中实现直接访问。
4.2 带有解释的详细代码示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
// File: Bike.java package org.studyeasy.vehicles; // Bike class extends Vehicle to inherit common properties like engine, wheels, and fuel tank. public class Bike extends Vehicle { // 从 private 改为 public 以允许直接访问 public String handle; // 构造函数初始化 Bike-specific property public Bike() { this.handle = "Short Handle"; // 初始化 handle property } // 可选:您可以有特定于 Bike 的其他方法 } // Assume that Vehicle.java looks similar to the following: package org.studyeasy.vehicles; public class Vehicle { // 为了简单起见使用了 public properties;通常,这些会被声明为 private 并配有 accessor methods. public String engine; public int wheels; public String fuelTank; public String lights; // 构造函数初始化默认值 public Vehicle() { this.engine = "petrol"; // 默认 engine 类型为 petrol this.wheels = 4; // 默认车轮数量(适用于通用车辆) this.fuelTank = "Standard Tank"; this.lights = "LED Lights"; } } |
4.3 逐步代码解释及预期输出
步骤 1: 对象创建
• 使用以下代码实例化一个 Bike object:
Bike bike = new Bike();
步骤 2: 访问属性
• Bike class 自动继承了来自 Vehicle class 的 public properties.
System.out.println(bike.handle);
→ 输出: “Short Handle”
• 访问继承而来的 engine 属性(如果 Vehicle 中的属性是 public):
System.out.println(bike.engine);
→ 输出: “petrol”
解释:
– Bike class 展示了 extends 的概念,即继承了 Vehicle class 的属性。
– 通过将 handle property 从 private 改为 public,我们确保了在引用 Bike instance 时可以直接使用该属性。
– 输出结果确认了 Bike 不仅具有其特定的属性(handle),还能访问继承而来的属性如 engine.
5. 结论与进一步阅读
总之,Java 继承通过允许在 base class 中定义共有属性和行为,然后由派生 classes 重用或扩展这些属性,从而简化了代码结构。通过车辆示例,我们看到了 Bike class 如何扩展 Vehicle class 以继承诸如 engine 属性,同时定义其独特的属性如 handle。这一模型适用于许多现实编程场景,尤其是在创建相关对象层次结构时。
关键要点:
– 继承促进了代码重用和逻辑组织。
– 修改属性访问权限(使用 public, protected, 或 private)在继承和封装中起着关键作用。
– 一个结构化的 class 层次结构可以简化维护并根据需要扩展功能。
对于初学者及具备基本 Java 知识的开发者来说,通过诸如车辆这样的实际示例来探究继承,可以显著强化核心 OOP 原则。
感谢您阅读这篇电子书风格的文章。我们希望它能为您提供对 Java 继承清晰简明的理解。祝您编码愉快!