Просмотр исходного кода

fix: 修正20260724课堂笔记——移除非今日授课内容(JDK8接口默认方法/静态方法/模板方法/通知系统),仅保留多态核心内容(概念/前提/成员访问特点/转型/instanceof/抽象类多态/USB接口多态)并同步更新README描述

WanJL 1 день назад
Родитель
Сommit
4f983bace8
2 измененных файлов с 43 добавлено и 124 удалено
  1. 3 3
      README.md
  2. 40 121
      课堂笔记/01-JavaSE基础-笔记/20260724-笔记.md

+ 3 - 3
README.md

@@ -31,7 +31,7 @@
 | 2026-07-21 | [构造方法:构造方法重载、this() 调用、private 构造方法、单例模式、课后作业回顾](./课堂笔记/01-JavaSE基础-笔记/20260721-笔记.md) |
 | 2026-07-22 | [继承:继承概念与格式、方法重写(@Override)、super 关键字、就近原则、继承中构造方法、单继承与多层继承、访问修饰符](./课堂笔记/01-JavaSE基础-笔记/20260722-笔记.md) |
 | 2026-07-23 | [抽象类 + final + 模板方法 + 代码块 + 接口(含JDK8+新特性):抽象类定义与特点、final 类/方法/变量、模板方法模式、三种代码块、接口定义与实现(Usb→LogiMouse/ROGMouse)、接口 vs 抽象类对比、JDK8默认方法static方法、JDK9私有方法](./课堂笔记/01-JavaSE基础-笔记/20260723-笔记.md) |
-| 2026-07-24 | [多态 + 多态中的转型 + 接口进阶(JDK8默认方法/静态方法 + 模板方法设计模式):多态概念与前提、多态成员访问特点、向上转型/向下转型、instanceof类型判断、多态的好处(开闭原则)、抽象类与多态结合(Person→Student/Teacher综合案例)、Usb接口多态案例(NoteBook接入鼠标/猫)、通知系统(Notifiable接口:default/static方法 + 模板方法send())](./课堂笔记/01-JavaSE基础-笔记/20260724-笔记.md) |
+| 2026-07-24 | [多态 + 多态中的转型:多态概念与前提、多态成员访问特点、向上转型/向下转型、instanceof类型判断、多态的好处(开闭原则)、抽象类与多态结合(Animal→Dog;Person→Student/Teacher综合案例)、Usb接口多态案例(NoteBook接入鼠标/猫)](./课堂笔记/01-JavaSE基础-笔记/20260724-笔记.md) |
 
 ## 二、授课代码
 
@@ -49,7 +49,7 @@
 | 2026-07-21 | 构造方法:构造方法重载、this() 调用、private 构造方法、单例模式、Fisher-Yates 洗牌算法、课后作业回顾 | `c260721` | [`course`](./授课代码/c260721/src/course/) / [`homework/c260717`](./授课代码/c260721/src/homework/c260717/) / [`homework/c260720`](./授课代码/c260721/src/homework/c260720/) / [`exercise/exercise01`](./授课代码/c260721/src/exercise/exercise01/) / [`exercise/exercise02`](./授课代码/c260721/src/exercise/exercise02/) |
 | 2026-07-22 | 继承:继承概念与格式、方法重写(Override)、super 关键字、就近原则、继承中构造方法、单继承与多层继承、访问修饰符、综合练习(学生管理系统+冒泡排序)、课后作业 | `c260722` | [`course`](./授课代码/c260722/src/course/) / [`exercise/studentSystem`](./授课代码/c260722/src/exercise/studentSystem/) / [`homework/p08_guessgame`](./授课代码/c260722/src/homework/p08_guessgame/) / [`homework/p09_bookmanager`](./授课代码/c260722/src/homework/p09_bookmanager/) |
 | 2026-07-23 | 抽象类 + final + 模板方法 + 代码块 + 接口(含JDK8+新特性):抽象类定义与特点、final 类/方法/变量、模板方法模式(MyOneDayTemplate)、三种代码块(局部/构造/静态)、接口定义与实现(Usb→LogiMouse/ROGMouse)、接口 vs 抽象类对比、JDK8默认方法/静态方法(MyDefaultInterface→MyDefaultInterfaceImpl)、JDK9私有方法(抽取多个默认方法公共代码)、Test05 测试类 | `c260723` | [`course`](./授课代码/c260723/src/course/) |
-| 2026-07-24 | 多态概念与前提、多态成员访问特点、向上转型/向下转型、instanceof运算符、多态的好处(开闭原则)、抽象类+多态(Animal→Dog、Person→Student/Teacher→Test03.runPerson())、接口多态(Usb→Mouse/Cat→NoteBook)、接口JDK8默认方法/静态方法、模板方法设计模式(Notifiable→EmailNotifier→TestNotification) | `c260724` | [`course`](./授课代码/c260724/src/course/) / [`homework`](./授课代码/c260724/src/homework/) |
+| 2026-07-24 | 多态概念与前提、多态成员访问特点、向上转型/向下转型、instanceof运算符、多态的好处(开闭原则)、抽象类+多态(Animal→Dog、Person→Student/Teacher→Test03.runPerson())、接口多态(Usb→Mouse/Cat→NoteBook) | `c260724` | [`course`](./授课代码/c260724/src/course/) |
 
 ## 三、课堂练习题
 
@@ -61,5 +61,5 @@
 | 2026-07-21 | [构造方法练习](./课堂练习题/20260721-构造方法练习.md) | 构造方法概念、构造方法重载、private 构造方法、this() 构造方法间调用、构造方法+对象数组+排序+Random 综合 |
 | 2026-07-22 | [继承练习](./课堂练习题/20260722-继承练习.md) | 继承概念与格式、多层继承、super() 调用父类构造方法、方法重写、is...a 关系判断、继承+构造方法+对象数组+排序+多态综合 |
 | 2026-07-23 | [抽象类与接口练习](./课堂练习题/20260723-抽象类与接口练习.md) | 抽象类定义与特点、抽象方法重写、抽象类计算周长与面积(Shape体系)、抽象类+对象数组+排序+多态综合、模板方法设计模式;接口入门(Playable播放器接口、Charger充电规范继承+实现、SmartPhone实现多接口) |
-| 2026-07-24 | [多态与接口进阶练习](./课堂练习题/20260724-多态与接口进阶练习.md) | 多态概念与三前提、多态成员访问特点(编译看左运行看右)、向上转型/向下转型、instanceof运算符、多态+对象数组+排序综合(员工绩效管理系统)、接口多态+Usb设备管理器、接口默认方法/静态方法(消息通知系统扩展)、模板方法设计模式(数据备份系统) |
+| 2026-07-24 | [多态与接口进阶练习](./课堂练习题/20260724-多态与接口进阶练习.md) | 多态概念与三前提、多态成员访问特点(编译看左运行看右)、向上转型/向下转型、instanceof运算符、多态+对象数组+排序综合(员工绩效管理系统)、接口多态+Usb设备管理器 |
 

+ 40 - 121
课堂笔记/01-JavaSE基础-笔记/20260724-笔记.md

@@ -288,7 +288,7 @@ public class Teacher extends Person {
 
 ---
 
-## 三、接口多态与接口新特性(JDK8+
+## 三、接口多态案例(USB接口 + 笔记本
 
 ### 3.1 接口定义
 
@@ -300,141 +300,67 @@ public interface Usb {
 ```
 > 📄 来源:`Usb.java`
 
-### 3.2 接口默认方法(JDK 8)
-
-在接口中定义带方法体的方法,使用 `default` 关键字。实现类可以选择重写或不重写。
+### 3.2 实现 Usb 接口的设备
 
 ```java
-public interface Notifiable {
-    // 抽象方法——实现类必须重写
-    void doSend(String recipient, String message);
-
-    // 默认方法——校验参数(实现类可选重写)
-    default boolean validateParams(String recipient, String message) {
-        if (recipient != null && message != null && !recipient.isEmpty() && !message.isEmpty()) {
-            System.out.println("参数校验通过");
-            return true;
-        }
-        System.out.println("参数校验失败:收件人或消息不能为空");
-        return false;
+// 鼠标实现 Usb 接口
+public class Mouse implements Usb {
+    @Override
+    public void startUsb() {
+        System.out.println("USB鼠标开启");
     }
-
-    // 默认方法——记录日志(实现类可选重写)
-    default void log(String level, String msg) {
-        System.out.println("[" + level + "]消息:" + msg);
+    @Override
+    public void stopUsb() {
+        System.out.println("USB鼠标关闭");
     }
 }
-```
-> 📄 来源:`Notifiable.java`
-
-### 3.3 接口静态方法(JDK 8)
-
-使用 `static` 关键字定义,通过接口名直接调用。
 
-```java
-public interface Notifiable {
-    static void printNotificationType() {
-        System.out.println("通知系统 v1.0——支持邮件/短信/微信通知");
-    }
+// Cat 也实现 Usb 接口(演示用:任何类都可以实现接口)
+public class Cat implements Usb {
+    @Override
+    public void startUsb() { }
+    @Override
+    public void stopUsb() { }
 }
-
-// 调用方式
-Notifiable.printNotificationType();
 ```
-> 📄 来源:`Notifiable.java`、`TestNotification.java`
-
----
-
-## 四、模板方法设计模式(基于接口默认方法)
+> 📄 来源:`Mouse.java`、`Cat.java`
 
-在接口中定义一个 **默认方法** 作为模板,规定固定的算法流程,让实现类只需关注核心业务逻辑。
+### 3.3 笔记本接入设备——多态参数的应用
 
 ```java
-public interface Notifiable {
-    // 模板方法——定义固定的发送流程
-    default void send(String recipient, String message) {
-        // 1、校验参数
-        boolean boo = validateParams(recipient, message);
-        if (boo) {
-            // 2、执行发送(调用抽象方法,由实现类完成具体逻辑)
-            doSend(recipient, message);
-            // 3、记录日志
-            log("INFO", "发送成功");
-            System.out.println("--- 发送流程结束 ---");
-        }
+// 笔记本——方法参数为 Usb 接口类型
+public class NoteBook {
+    public void useUsb(Usb usb) {   // 📌 接口类型参数 —— 多态的体现
+        usb.startUsb();
+        System.out.println("开始工作.....");
+        usb.stopUsb();
     }
 }
 ```
-> 📄 来源:`Notifiable.java`
+> 📄 来源:`NoteBook.java`
 
-**流程示意图**:
-```
-send()  →  validateParams()  →  doSend()  →  log()  →  完成
-(模板)     (默认方法-校验)      (抽象方法)    (默认方法)
-```
-
----
-
-## 五、课后作业:通知系统(Notifiable 体系)
-
-### 5.1 接口定义
-
-使用 JDK8 新特性定义通知接口:
-- 抽象方法 `doSend()`——实现类实现不同的发送逻辑
-- 默认方法 `validateParams()`——参数校验
-- 默认方法 `log()`——日志记录
-- 默认方法 `send()`——**模板方法**,组合流程
-- 静态方法 `printNotificationType()`——输出系统信息
-
-### 5.2 实现类
+### 3.4 测试多态
 
 ```java
-public class EmailNotifier implements Notifiable {
-    @Override
-    public void doSend(String recipient, String message) {
-        System.out.println("发送邮件给 " + recipient + ":内容 -" + message);
-    }
-    // 可选重写默认方法 log()
-    @Override
-    public void log(String level, String msg) {
-        System.out.println("[邮件][" + level + "]消息:" + msg);
-    }
-}
-```
-> 📄 来源:`EmailNotifier.java`
+public class Test02 {
+    public static void main(String[] args) {
+        NoteBook noteBook = new NoteBook();
 
-### 5.3 测试类
+        Usb mouse = new Mouse();        // ✅ 接口引用指向实现类对象
+        noteBook.useUsb(mouse);         // 传入鼠标
 
-```java
-public class TestNotification {
-    public static void main(String[] args) {
-        // 1、调用接口静态方法
-        Notifiable.printNotificationType();
-        // 2、创建实现类对象
-        EmailNotifier en = new EmailNotifier();
-        // 3、正常发送
-        en.send("admin@163.com", "系统升级通知");
-        // 4、参数为空——触发校验失败
-        en.send("", "测试");
+        Usb cat = new Cat();            // ✅ 猫也实现了 Usb
+        noteBook.useUsb(cat);           // 传入猫 USB
     }
 }
 ```
-> 📄 来源:`TestNotification.java`
-
-### 5.4 作业题目文档
-
-课后作业的完整题目要求、预期输出及思考题已整理为独立文档:
-
-📄 **`homework/题目.md`** → [查看作业题目](../../授课代码/c260724/src/homework/题目.md)
+> 📄 来源:`Test02.java`
 
-该文档包含:
-- 完整的接口设计与实现类要求(含 `SMSNotifier` 短信通知实现)
-- 详细的预期输出对照
-- 3 道思考题(final 与接口方法的限制、默认方法重写的意义、静态方法调用方式)
+> **关键点**:`NoteBook.useUsb(Usb usb)` 的参数类型是 **接口**,任何实现 `Usb` 接口的类都可以传入,无需修改笔记本的代码即可接入新设备——这就是 **多态提高扩展性** 的典型应用。
 
 ---
 
-## 、随堂练习要点
+## 四、随堂练习要点
 
 | 练习方向 | 涉及知识点 | 对应文件 |
 |---------|-----------|---------|
@@ -442,24 +368,20 @@ public class TestNotification {
 | 多态中的转型 | 向上转型、向下转型、instanceof 运算符 | `Demo02.java`、`Test03.java` |
 | 抽象类多态综合 | 抽象父类 Person、多态参数、向下转型调特有方法 | `Test03.java`、`Person.java` |
 | 接口多态 | Usb 接口、笔记本接入多设备 | `Test02.java`、`NoteBook.java` |
-| 通知系统(作业) | 接口默认方法、静态方法、模板方法设计模式 | 作业包 `homework` + [`题目.md`](../../授课代码/c260724/src/homework/题目.md) |
 
 ---
 
-## 、拓展阅读 & 常见面试题
+## 、拓展阅读 & 常见面试题
 
 1. **多态的实现原理**——Java 中多态是通过**动态绑定(后期绑定)**实现的,JVM 在运行时根据对象的实际类型调用对应的方法。
 2. **多态与继承的关系**——多态是基于继承或接口实现的。
 3. **多态的优势**——提高代码的可扩展性和可维护性,符合**开闭原则**(对扩展开放,对修改关闭)。
 4. **向下转型的风险**——向下转型必须配合 `instanceof` 判断,否则可能抛出 `ClassCastException`(类型转换异常)。
 5. **instanceof 的用法**——常用于向下转型前的安全判断,避免强制类型转换异常。
-6. **接口默认方法的用途**——在不破坏已有实现类的前提下向接口添加新方法;实现模板方法模式。
-7. **接口静态方法的用途**——提供工具方法,接口即命名空间,无需额外工具类。
-8. **模板方法设计模式**——定义一个操作中的算法骨架(模板方法),将一些步骤延迟到子类/实现类中实现。
 
 ---
 
-## 、今日知识图谱
+## 、今日知识图谱
 
 ```
 面向对象三大特征
@@ -477,9 +399,6 @@ public class TestNotification {
     │   │   └── 用途:调用子类特有方法
     │   └── instanceof 运算符
     │       └── 格式:对象名 instanceof 类型(返回 boolean)
-    ├── 多态的好处:提高扩展性(开闭原则)
-    │   └── 案例:NoteBook.useUsb(Usb usb)
-    └── 接口多态 + JDK8 新特性
-        ├── 默认方法(default)—— 模板方法设计模式
-        └── 静态方法(static)—— 接口名直接调用
+    └── 多态的好处:提高扩展性(开闭原则)
+        └── 案例:NoteBook.useUsb(Usb usb)
 ```