WanJL 18 tuntia sitten
vanhempi
commit
e55fc93f62
1 muutettua tiedostoa jossa 0 lisäystä ja 89 poistoa
  1. 0 89
      课堂练习题/20260724-内部类练习.md

+ 0 - 89
课堂练习题/20260724-内部类练习.md

@@ -1,89 +0,0 @@
-# 2026-07-24 内部类(Inner Class)基础练习(课堂练习用)
-
-> **说明**:以下习题围绕今日授课核心内容——**内部类(Inner Class)** 展开,涵盖内部类的概念与使用场景、成员内部类、私有内部类、内部类访问外部类私有成员、外部类通过方法暴露内部类等知识点。
-
----
-
-## 练习 1:内部类入门——计算机硬件体系 ⭐⭐⭐
-
-**知识点**:成员内部类、私有内部类、内部类访问外部类私有成员、外部类通过方法暴露内部类
-
-### 需求说明
-
-一台计算机由多个硬件组成,如 **CPU(处理器)** 和 **内存**。这些硬件**只能作为计算机的一部分存在**,不能脱离计算机单独使用。同时,CPU 有自己的属性和行为,内存也有自己的属性和行为。
-
-请使用 **内部类** 来设计这个计算机硬件体系。
-
-### 类设计
-
-#### Computer 类(外部类)
-
-| 成员 | 说明 |
-|------|------|
-| 私有属性 | `brand`(品牌,String)、`model`(型号,String) |
-| 构造方法 | `Computer(String brand, String model)` |
-| 方法 | `void showInfo()` —— 输出 `"计算机:xxx 品牌:xxx"` |
-| 方法 | `void startComputer()` —— 输出启动信息,依次调用 CPU 和 Memory 的方法 |
-| 方法 | `CPU getCPU()` —— 返回 CPU 对象 |
-| 方法 | `Memory getMemory()` —— 返回 Memory 对象 |
-
-#### CPU 内部类(成员内部类——不私有化)
-
-| 成员 | 说明 |
-|------|------|
-| 私有属性 | `name`(型号,String)、`frequency`(主频,double) |
-| 构造方法 | `CPU(String name, double frequency)` |
-| 方法 | `void calculate()` —— 输出 `"计算机 xxx xxx 的 CPU xxx(xxx GHz)正在计算..."`(访问外部类私有属性) |
-| 方法 | `void showCPUInfo()` —— 输出 `"CPU:xxx,主频:xxx GHz"` |
-
-#### Memory 内部类(私有内部类)
-
-| 成员 | 说明 |
-|------|------|
-| 私有属性 | `capacity`(容量,int,单位 GB) |
-| 构造方法 | `Memory(int capacity)` |
-| 方法 | `void readData()` —— 输出 `"内存(xxx GB)正在读取数据..."` |
-| 方法 | `void writeData()` —— 输出计算机信息 + `"内存(xxx GB)正在写入数据..."`(调用外部类 `showInfo()`) |
-
-### 测试类要求
-
-**`TestComputer` 类**:
-
-1. 创建 `Computer` 对象("联想", "ThinkPad X1"),构造方法中创建 CPU("酷睿 i7", 3.2)和 Memory(16)
-2. 调用 `computer.showInfo()`
-3. 通过 `computer.getCPU()` 获取 CPU,调用 `showCPUInfo()` 和 `calculate()`
-4. 尝试直接创建 `Memory` 对象(应编译报错,验证私有内部类限制)
-5. 通过 `computer.getMemory()` 获取 Memory,调用 `readData()` 和 `writeData()`
-6. 调用 `computer.startComputer()` 完整启动流程
-
-```java
-// 这行应编译报错——Memory 是 Computer 的私有内部类
-// Memory mem = new Memory(16);  // ❌
-```
-
-### 思考题
-
-1. 为什么 Memory 要设计为 `private` 内部类?如果改为非私有会怎样?
-2. CPU 内部类直接访问外部类 `private` 属性,这说明了内部类的什么特点?
-3. 如果将 CPU 改为 `static class CPU`,还能直接访问外部类的 `brand` 和 `model` 吗?为什么?
-
-### 预期输出
-
-```
-========== 计算机信息 ==========
-计算机:ThinkPad X1 品牌:联想
-
-========== 获取 CPU ==========
-CPU:酷睿 i7,主频:3.2 GHz
-计算机 联想 ThinkPad X1 的 CPU 酷睿 i7(3.2 GHz)正在计算...
-
-========== 获取内存 ==========
-内存(16 GB)正在读取数据...
-计算机:ThinkPad X1 品牌:联想
-内存(16 GB)正在写入数据...
-
-========== 启动计算机 ==========
-计算机启动中...
-计算机 联想 ThinkPad X1 的 CPU 酷睿 i7(3.2 GHz)正在计算...
-内存(16 GB)正在读取数据...
-```