فهرست منبع

feat: 新增20260723接口入门练习题——Playable播放器接口/Charger充电规范(继承+实现)/SmartPhone多接口实现

WanJL 1 روز پیش
والد
کامیت
0379ab16c0
2فایلهای تغییر یافته به همراه155 افزوده شده و 4 حذف شده
  1. 1 1
      README.md
  2. 154 3
      课堂练习题/20260723-抽象类练习.md

+ 1 - 1
README.md

@@ -58,5 +58,5 @@
 | 2026-07-20 | [面向对象基础练习](./课堂练习题/20260720-面向对象基础练习.md) | 类与对象、封装、包、方法、数组、Random 综合
 | 2026-07-21 | [构造方法练习](./课堂练习题/20260721-构造方法练习.md) | 构造方法概念、构造方法重载、private 构造方法、this() 构造方法间调用、构造方法+对象数组+排序+Random 综合 |
 | 2026-07-22 | [继承练习](./课堂练习题/20260722-继承练习.md) | 继承概念与格式、多层继承、super() 调用父类构造方法、方法重写、is...a 关系判断、继承+构造方法+对象数组+排序+多态综合 |
-| 2026-07-23 | [抽象类练习](./课堂练习题/20260723-抽象类练习.md) | 抽象类定义与特点、抽象方法重写、抽象类计算周长与面积(Shape体系)、抽象类+对象数组+排序+多态综合、模板方法设计模式 |
+| 2026-07-23 | [抽象类练习](./课堂练习题/20260723-抽象类练习.md) | 抽象类定义与特点、抽象方法重写、抽象类计算周长与面积(Shape体系)、抽象类+对象数组+排序+多态综合、模板方法设计模式;接口入门(Playable播放器接口、Charger充电规范继承+实现、SmartPhone实现多接口) |
 

+ 154 - 3
课堂练习题/20260723-抽象类练习.md

@@ -1,8 +1,8 @@
 # 2026-07-23 抽象类(Abstract)基础练习(课堂练习用)
 
-> **说明**:以下习题围绕今日授课核心内容——**抽象类(abstract)** 展开,涵盖抽象类的定义、特点、抽象方法的重写以及抽象类与对象数组/排序的综合应用
+> **说明**:以下习题围绕今日授课核心内容——**抽象类(abstract)** 和 **接口(Interface)** 展开,涵盖抽象类的定义、特点、抽象方法的重写、抽象类与对象数组/排序的综合应用,以及接口的定义、实现、多实现等入门知识
 >
-> 题目分为三部分:**随堂练习**(抽象类入门,4 题)、**进阶练习**(综合挑战,2 题)和 **课外拓展**(1 题)。
+> 题目分为四部分:**随堂练习**(抽象类入门,4 题)、**进阶练习**(综合挑战,2 题)、**课外拓展**(1 题)和 **接口入门练习**(3 题)。
 
 ---
 
@@ -406,14 +406,165 @@ Java 考试评分:检查代码正确性,选择题自动判分...
 
 ---
 
+# 第四部分:接口入门练习
+
+> 以下练习围绕 **接口(Interface)** 的基础概念和用法,由浅入深。
+
+---
+
+## 练习 5:接口入门——Playable 播放器接口
+
+**难度**:⭐  
+**知识点**:接口定义、接口方法、implements 实现接口
+
+创建一个播放器接口体系:
+
+**`Playable` 接口**:
+- **抽象方法**:`void play()` —— 播放
+- **抽象方法**:`void pause()` —— 暂停
+- **抽象方法**:`void stop()` —— 停止
+
+**`MP3Player` 类**(实现 Playable):
+- **私有属性**:`songName`(歌曲名,String)
+- **构造方法**:`MP3Player(String songName)`
+- **实现** `play()` —— 输出 `"正在播放:xxx"`
+- **实现** `pause()` —— 输出 `"暂停播放:xxx"`
+- **实现** `stop()` —— 输出 `"停止播放:xxx"`
+
+**`VideoPlayer` 类**(实现 Playable):
+- **私有属性**:`movieName`(电影名,String)
+- **构造方法**:`VideoPlayer(String movieName)`
+- **实现** `play()` —— 输出 `"正在播放视频:xxx"`
+- **实现** `pause()` —— 输出 `"暂停播放视频:xxx"`
+- **实现** `stop()` —— 输出 `"停止播放视频:xxx"`
+
+**测试类要求**:
+1. 创建 `MP3Player` 对象("青花瓷"),依次调用 `play()`、`pause()`、`stop()`
+2. 创建 `VideoPlayer` 对象("哪吒"),依次调用 `play()`、`pause()`、`stop()`
+3. 思考:`Playable` 接口中三个方法的默认修饰符是什么?
+
+**预期输出**:
+```
+正在播放:青花瓷
+暂停播放:青花瓷
+停止播放:青花瓷
+正在播放视频:哪吒
+暂停播放视频:哪吒
+停止播放视频:哪吒
+```
+
+---
+
+## 练习 6:USB 充电器接口——Charger 充电规范 ⭐(配合课堂代码)
+
+**难度**:⭐⭐  
+**知识点**:接口定义、implements 实现、类继承父类的同时实现接口
+
+参照课堂上的 USB 接口标准示例,创建一个充电器接口体系:
+
+**`Charger` 接口**:
+- **抽象方法**:`void connect()` —— 连接设备
+- **抽象方法**:`void charging()` —— 正在充电
+- **抽象方法**:`void disconnect()` —— 断开连接
+
+**`Device` 类**(父类):
+- **私有属性**:`brand`(品牌,String)、`model`(型号,String)
+- **构造方法**:`Device(String brand, String model)`
+- **getter/setter**
+- **普通方法**:`showInfo()` —— 输出 `"设备:xxx 品牌:xxx"`
+
+**`Phone` 类**(继承 Device 并实现 Charger):
+- **新增私有属性**:`batteryCapacity`(电池容量,int,单位 mAh)
+- **构造方法**:`Phone(String brand, String model, int batteryCapacity)`
+- **实现** `connect()` —— 输出 `"手机已连接充电器"`
+- **实现** `charging()` —— 输出 `"手机正在充电,电池容量:xxx mAh"`
+- **实现** `disconnect()` —— 输出 `"手机已断开充电器"`
+
+**`Laptop` 类**(继承 Device 并实现 Charger):
+- **新增私有属性**:`power`(功率,int,单位 W)
+- **构造方法**:`Laptop(String brand, String model, int power)`
+- **实现** `connect()` —— 输出 `"笔记本电脑已连接电源"`
+- **实现** `charging()` —— 输出 `"笔记本电脑正在充电,功率:xxx W"`
+- **实现** `disconnect()` —— 输出 `"笔记本电脑已断开电源"`
+
+**测试类要求**:
+1. 创建 `Phone` 对象("华为", "Mate60", 5000),调用 `showInfo()`,然后依次调用充电三步骤
+2. 创建 `Laptop` 对象("联想", "ThinkPad", 65),调用 `showInfo()`,然后依次调用充电三步骤
+
+**预期输出**:
+```
+设备:Mate60 品牌:华为
+手机已连接充电器
+手机正在充电,电池容量:5000 mAh
+手机已断开充电器
+设备:ThinkPad 品牌:联想
+笔记本电脑已连接电源
+笔记本电脑正在充电,功率:65 W
+笔记本电脑已断开电源
+```
+
+---
+
+## 练习 7:接口多实现——多功能设备
+
+**难度**:⭐⭐⭐  
+**知识点**:一个类实现多个接口、接口的扩展性
+
+创建一个多功能设备,同时实现 **拍照** 和 **播放** 两个接口。
+
+**`Camera` 接口**:
+- **抽象方法**:`void takePhoto()` —— 拍照
+- **抽象方法**:`void recordVideo()` —— 录像
+
+**`Playable` 接口**(复用练习 5 的定义):
+- **抽象方法**:`void play()` —— 播放
+- **抽象方法**:`void pause()` —— 暂停
+- **抽象方法**:`void stop()` —— 停止
+
+**`SmartPhone` 类**(实现 Camera 和 Playable 两个接口):
+- **私有属性**:`brand`(品牌,String)、`model`(型号,String)
+- **构造方法**:`SmartPhone(String brand, String model)`
+- **实现** `takePhoto()` —— 输出 `"xxx xxx 拍照:咔嚓!"`
+- **实现** `recordVideo()` —— 输出 `"xxx xxx 录像:开始录制视频..."`
+- **实现** `play()` —— 输出 `"xxx xxx 播放音乐"`
+- **实现** `pause()` —— 输出 `"xxx xxx 暂停播放"`
+- **实现** `stop()` —— 输出 `"xxx xxx 停止播放"`
+
+> 注意:`xxx xxx` 部分使用品牌和型号拼接,如 `"苹果 iPhone15"`。
+
+**测试类要求**:
+1. 创建 `SmartPhone` 对象("苹果", "iPhone15")
+2. 调用拍照功能:`takePhoto()`、`recordVideo()`
+3. 调用播放功能:`play()`、`pause()`、`stop()`
+4. 观察:**一个类实现了两个接口,同时拥有了拍照能力和播放能力**——这就是接口做功能拓展的优势
+
+**思考题**:
+1. 如果使用抽象类来实现同样的功能,你会怎么设计?能避免「单继承」的限制吗?
+2. 接口中的方法默认使用什么修饰符?可以省略不写吗?
+3. 接口中的变量默认使用什么修饰符?可以修改接口中变量的值吗?
+
+**预期输出**:
+```
+苹果 iPhone15 拍照:咔嚓!
+苹果 iPhone15 录像:开始录制视频...
+苹果 iPhone15 播放音乐
+苹果 iPhone15 暂停播放
+苹果 iPhone15 停止播放
+```
+
+---
+
 ## 📋 题目总览
 
 | 序号 | 所属部分 | 核心知识点 | 难度 |
 |------|---------|-----------|------|
 | 练习 1 | 随堂 | 抽象类定义、抽象方法、子类重写抽象方法 | ⭐ |
-| 练习 2 | 随堂 | **抽象类:计算周长 + 计算面积**、方法重写、super() 调用父类构造方法 | ⭐⭐ |
+| 练习 2 | 随堂 | 抽象类:计算周长 + 计算面积、方法重写、super() 调用父类构造方法 | ⭐⭐ |
 | 练习 3 | 随堂 | 抽象类 + 构造方法 + super()、抽象方法重写 | ⭐⭐ |
 | 练习 4 | 随堂 | 抽象类设计思想、判断何时使用抽象类 | ⭐⭐ |
 | 进阶 1 | 进阶 | 抽象类 + 对象数组 + 冒泡排序 + 多态 | ⭐⭐⭐⭐ |
 | 进阶 2 | 进阶 | 抽象类 + 多态 + 继承 + 综合应用 | ⭐⭐⭐⭐⭐ |
 | 拓展 3 | 课外 | 模板方法设计模式(抽象类经典应用) | ⭐⭐⭐⭐⭐ |
+| 练习 5 | 接口入门 | 接口定义、接口方法、implements 实现接口 | ⭐ |
+| 练习 6 | 接口入门 | 接口实现、类继承父类同时实现接口(Charger 充电规范) | ⭐⭐ |
+| 练习 7 | 接口入门 | 一个类实现多个接口、接口做功能拓展 | ⭐⭐⭐ |