|
|
@@ -114,7 +114,33 @@ public class Demo03 {
|
|
|
|
|
|
---
|
|
|
|
|
|
+### 7. 对象数组(Object Array)
|
|
|
|
|
|
+**文件**:`Test01.java`, `Test02.java`
|
|
|
+
|
|
|
+对象数组的数组元素类型是**类名**,存储的是对象的**引用地址**(而非对象本身)。
|
|
|
+
|
|
|
+```java
|
|
|
+// 定义一个可以存储 10 个 BaiLu 对象引用的数组
|
|
|
+BaiLu[] bailus = new BaiLu[10];
|
|
|
+// 定义一个可以存储 10 个 Bike 对象引用的数组
|
|
|
+Bike[] bikes = new Bike[10];
|
|
|
+```
|
|
|
+
|
|
|
+**创建对象并存入数组的标准操作**:
|
|
|
+
|
|
|
+```java
|
|
|
+// 1. 先创建对象
|
|
|
+BaiLu b = new BaiLu();
|
|
|
+// 2. 调用对象方法
|
|
|
+b.up("青天");
|
|
|
+// 3. 将对象引用(地址值)存入数组
|
|
|
+bailus[i] = b;
|
|
|
+```
|
|
|
+
|
|
|
+> **对比基本类型数组**:`int[] arr = new int[10]` 存的是数值;对象数组存的是引用(地址)。
|
|
|
+
|
|
|
+---
|
|
|
|
|
|
## 二、代码实战:类与对象完整示例
|
|
|
|
|
|
@@ -232,9 +258,120 @@ public class TeacherTest {
|
|
|
|
|
|
---
|
|
|
|
|
|
+### 4. 对象数组实战①——黄鹂与白鹭(古诗场景)
|
|
|
+
|
|
|
+**文件**:`HuangLi.java`, `BaiLu.java`, `Test01.java`
|
|
|
+
|
|
|
+**定义类——黄鹂(HuangLi.java)**:
|
|
|
+
|
|
|
+```java
|
|
|
+public class HuangLi {
|
|
|
+ public void sing(String s) {
|
|
|
+ System.out.println("黄鹂鸣" + s);
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**定义类——白鹭(BaiLu.java)**:
|
|
|
+
|
|
|
+```java
|
|
|
+public class BaiLu {
|
|
|
+ public void up(String s) {
|
|
|
+ System.out.println("白鹭上" + s);
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**测试类 —— 使用对象数组**:
|
|
|
+
|
|
|
+```java
|
|
|
+public class Test01 {
|
|
|
+ public static void main(String[] args) {
|
|
|
+ // 黄鹂:创建两个对象,调用方法
|
|
|
+ HuangLi h1 = new HuangLi();
|
|
|
+ HuangLi h2 = new HuangLi();
|
|
|
+ String s1 = "翠柳";
|
|
|
+ h1.sing(s1);
|
|
|
+ h2.sing(s1);
|
|
|
+
|
|
|
+ // 白鹭:对象数组,循环创建 10 个对象
|
|
|
+ String s2 = "青天";
|
|
|
+ BaiLu[] bailus = new BaiLu[10];
|
|
|
+ // 初始状态:数组元素全为 null
|
|
|
+ System.out.println(Arrays.toString(bailus));
|
|
|
+
|
|
|
+ for (int i = 0; i < 10; i++) {
|
|
|
+ BaiLu b = new BaiLu(); // 创建白鹭对象
|
|
|
+ b.up(s2); // 调用方法
|
|
|
+ bailus[i] = b; // 存入数组(存的是地址值)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+> **要点**:对象数组刚刚创建时,所有元素默认为 `null`。需要逐个 `new` 对象并赋值后才能使用。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+### 5. 对象数组实战②——汽车与自行车(交通场景)
|
|
|
+
|
|
|
+**文件**:`Car.java`, `Bike.java`, `Test02.java`
|
|
|
+
|
|
|
+**定义类——汽车(Car.java)**:
|
|
|
+
|
|
|
+```java
|
|
|
+public class Car {
|
|
|
+ String brand; // 品牌
|
|
|
+ String color; // 颜色
|
|
|
+
|
|
|
+ public void drive() {
|
|
|
+ System.out.println(brand + "牌的" + color + "汽车行驶.....");
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**定义类——自行车(Bike.java)**:
|
|
|
+
|
|
|
+```java
|
|
|
+public class Bike {
|
|
|
+ String type; // 车型
|
|
|
+
|
|
|
+ public void ride() {
|
|
|
+ System.out.println("我骑着" + type + "自行车在骑行.....");
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+**测试类 —— 单个对象 + 对象数组**:
|
|
|
+
|
|
|
+```java
|
|
|
+public class Test02 {
|
|
|
+ public static void main(String[] args) {
|
|
|
+ // 单个汽车对象
|
|
|
+ Car c = new Car();
|
|
|
+ c.brand = "奔驰";
|
|
|
+ c.color = "白色";
|
|
|
+ c.drive();
|
|
|
+
|
|
|
+ // 自行车对象数组
|
|
|
+ Bike[] bikes = new Bike[10];
|
|
|
+ for (int i = 0; i < 10; i++) {
|
|
|
+ Bike b = new Bike();
|
|
|
+ b.type = "山地";
|
|
|
+ bikes[i] = b;
|
|
|
+ bikes[i].ride();
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+> **要点**:单个对象与对象数组混合使用,展示了面向对象建模中「1 对 N」关系的代码实现。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
## 三、随堂练习
|
|
|
|
|
|
-> 以下练习在 `Demo02.java` 中以注释形式列出,作为课后实现任务。
|
|
|
+> 以下练习在 `Demo02.java` 和 `Demo03.java` 中以注释形式列出,作为课后实现任务。
|
|
|
|
|
|
### 练习 1:教师类完整定义
|
|
|
|
|
|
@@ -268,6 +405,22 @@ public class TeacherTest {
|
|
|
|
|
|
---
|
|
|
|
|
|
+### 练习 6:古诗场景建模(Demo03 练习)
|
|
|
+
|
|
|
+分析诗句「两只黄鹂鸣翠柳,一行白鹭上青天」,创建对应类和测试类:
|
|
|
+- 黄鹂类(`HuangLi`):`sing(String s)` 方法
|
|
|
+- 白鹭类(`BaiLu`):`up(String s)` 方法
|
|
|
+- 测试类:创建 2 只黄鹂对象 + 10 只白鹭对象数组
|
|
|
+
|
|
|
+### 练习 7:交通场景建模(Demo03 练习)
|
|
|
+
|
|
|
+分析描述「一辆汽车在路上行驶,一队自行车并排骑行」,创建对应类和测试类:
|
|
|
+- 汽车类(`Car`):品牌、颜色属性 + `drive()` 方法
|
|
|
+- 自行车类(`Bike`):车型属性 + `ride()` 方法
|
|
|
+- 测试类:1 个汽车对象 + 10 辆自行车对象数组
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
## 四、知识点总结
|
|
|
|
|
|
| 序号 | 知识点 | 说明 | 对应文件 |
|
|
|
@@ -282,6 +435,9 @@ public class TeacherTest {
|
|
|
| 8 | 对象地址 | 直接输出对象得到 `类型@哈希码` | `TeacherTest.java` |
|
|
|
| 9 | 成员变量 vs 局部变量 | 四维对比:位置、内存、生命周期、初始化值 | `Demo03.java` |
|
|
|
| 10 | 对象引用与内存共享 | 多个引用指向同一内存地址,修改互相影响 | `Demo03.java` |
|
|
|
+| 11 | 对象数组 | 数组元素类型为类名,存储对象引用地址 | `Test01.java`, `Test02.java` |
|
|
|
+| 12 | 循环创建对象并存入数组 | for 循环中 `new` 对象,赋值给数组元素 | `Test01.java`, `Test02.java` |
|
|
|
+| 13 | 多个类协同建模 | 将现实场景(古诗/交通)抽象为多个类 | `HuangLi.java`, `BaiLu.java`, `Car.java`, `Bike.java` |
|
|
|
|
|
|
---
|
|
|
|