Browse Source

feat: 新增20260722课后作业——Appliance电器体系(⭐)/Employee员工体系(⭐⭐)

WanJL 2 days ago
parent
commit
ecc6c58f0f
1 changed files with 135 additions and 0 deletions
  1. 135 0
      课后作业/2026年7月22日-作业.md

+ 135 - 0
课后作业/2026年7月22日-作业.md

@@ -0,0 +1,135 @@
+# 2026-07-22 JavaSE 课后作业
+
+> **课程内容**:继承(extends)—— 继承的概念与格式、方法重写(Override)、super 关键字、同名属性处理、变量就近原则、构造方法继承特点
+>
+> **涉及前序知识**:封装、构造方法、getter/setter、对象创建
+>
+> **提交方式**:在 `提交\姓名\` 目录下创建对应的 Java 源文件
+>
+> **截止时间**:下次上课前
+
+---
+
+## 📌 本次作业重要说明
+
+### 命名要求
+
+| 项目 | 要求 |
+|------|------|
+| **包名** | **必须按题目指定的包名创建**(全小写) |
+| **类名** | 自由命名,但需**见名知意**(如实体类用 `Appliance`、`TV` 等均可) |
+| **测试类** | 建议命名为 `TestXxx` 或 `XxxTest` |
+| **文件名** | 必须与类名一致 |
+
+### 提交目录结构示例
+
+```
+提交\
+└─ 张三\
+    ├─ p10_appliance\          ← 第 1 题的包
+    │   ├─ Appliance.java       ← 实体类(父类)
+    │   ├─ TV.java              ← 实体类(子类)
+    │   ├─ WashingMachine.java  ← 实体类(子类)
+    │   └─ TestAppliance.java   ← 测试类
+    └─ p11_employee\            ← 第 2 题的包
+        ├─ Employee.java        ← 实体类(父类)
+        ├─ Teacher.java         ← 实体类(子类)
+        ├─ Doctor.java          ← 实体类(子类)
+        └─ TestEmployee.java    ← 测试类
+```
+
+> ⚠ **注意**:包名必须严格按题目要求书写(全小写),目录结构必须与包结构一致。
+
+---
+
+## 第 1 题:继承入门——Appliance 电器体系 ⭐
+
+**包名**:`p10_appliance`
+
+**知识点**:继承的格式、子类调用父类方法
+
+创建一个简单的电器继承体系:
+
+### Appliance 类(父类)
+- **方法**:`powerOn()` —— 输出 `"电器已开机"`
+- **方法**:`powerOff()` —— 输出 `"电器已关机"`
+
+### TV 类(子类,继承 Appliance)
+- **方法**:`changeChannel()` —— 输出 `"电视切换频道"`
+
+### WashingMachine 类(子类,继承 Appliance)
+- **方法**:`startWash()` —— 输出 `"洗衣机开始洗衣服"`
+
+### 测试类要求(测试类类名自拟,置于 `p10_appliance` 包下)
+1. 创建 `TV` 对象,依次调用 `powerOn()`、`changeChannel()`、`powerOff()` 方法
+2. 创建 `WashingMachine` 对象,依次调用 `powerOn()`、`startWash()`、`powerOff()` 方法
+3. 观察子类是否可以直接使用父类的方法
+
+### 预期输出
+```
+电器已开机
+电视切换频道
+电器已关机
+电器已开机
+洗衣机开始洗衣服
+电器已关机
+```
+
+> 💡 **提示**:子类不需要定义 `powerOn()` 和 `powerOff()` 方法,直接继承自父类即可使用。
+
+---
+
+## 第 2 题:继承 + 构造方法 + 方法重写——Employee 员工体系 ⭐⭐
+
+**包名**:`p11_employee`
+
+**知识点**:继承 + 构造方法(含 `super()` 调用)+ 方法重写(Override)
+
+创建员工继承体系:
+
+### Employee 类(父类)
+- **私有属性**:`id`(工号,int)、`name`(姓名,String)、`salary`(薪资,double)
+- **全参构造方法**:`Employee(int id, String name, double salary)`
+- **getter/setter**
+- **方法**:`work()` —— 输出 `"员工在工作"`
+
+### Teacher 类(继承 Employee)
+- **新增私有属性**:`subject`(教授科目,String)
+- **全参构造方法**:`Teacher(int id, String name, double salary, String subject)`
+  - 使用 `super(id, name, salary)` 调用父类构造方法
+- **getter/setter**
+- **重写** `work()` —— 输出 `"工号为xxx的xxx老师正在教授xxx课程"`
+
+### Doctor 类(继承 Employee)
+- **新增私有属性**:`specialty`(专长科室,String)
+- **全参构造方法**:`Doctor(int id, String name, double salary, String specialty)`
+  - 使用 `super(id, name, salary)` 调用父类构造方法
+- **getter/setter**
+- **重写** `work()` —— 输出 `"工号为xxx的xxx医生正在xxx科室坐诊"`
+
+### 测试类要求(测试类类名自拟,置于 `p11_employee` 包下)
+1. 创建 `Employee` 对象,调用 `work()` 方法
+2. 创建 `Teacher` 对象(如:工号 1001,姓名"张老师",薪资 8000,科目"Java编程"),调用 `work()` 方法
+3. 创建 `Doctor` 对象(如:工号 2001,姓名"李医生",薪资 12000,科室"内科"),调用 `work()` 方法
+4. 观察:相同的 `work()` 方法名,在不同的子类中有不同的输出——这就是 **方法重写(Override)**
+
+### 示例输出
+```
+员工在工作
+工号为1001的张老师正在教授Java编程课程
+工号为2001的李医生正在内科科室坐诊
+```
+
+> 💡 **提示**:
+> - 子类构造方法中必须使用 `super(参数)` 调用父类的有参构造方法
+> - 方法重写时,方法签名(方法名 + 参数列表)必须与父类完全一致
+> - 可以通过 `getId()`、`getName()` 获取父类私有属性值
+
+---
+
+## 📋 题目总览
+
+| 序号 | 包名 | 核心知识点 | 难度 |
+|------|------|-----------|------|
+| 第 1 题 | `p10_appliance` | 继承格式、子类调用父类方法 | ⭐ |
+| 第 2 题 | `p11_employee` | 继承 + 构造方法 + `super()` + 方法重写 | ⭐⭐ |