第 3 周:继承 / 多态 / 抽象类 / 接口
本周目标
本周开始写出“像 Java 项目”的代码。完成后,应能够:
- 使用继承抽取公共属性和行为,减少重复代码
- 使用方法重写和
super扩展父类行为 - 使用多态编写可扩展的调用代码
- 使用抽象类定义模板结构
- 使用接口定义能力约定,并说明接口与抽象类的区别
- 为学生信息管理系统设计出可扩展的领域模型
学习资料与范围
- 主课程:Java 零基础视频教程(上部)
- 视频范围:P96-P130(继承、super、多态、抽象类、接口)
| 视频范围 | 学习模块 | 学习结果 |
|---|---|---|
| P96-P103 | 继承、extends、访问权限和继承的特点 | 能够使用继承抽取公共成员 |
| P104-P110 | 方法重写、super、构造方法调用顺序 | 能够在子类中扩展父类行为 |
| P111-P118 | 多态、成员访问特点、类型转换和 instanceof | 能够使用父类引用操作子类对象 |
| P119-P124 | 抽象类、抽象方法和模板设计 | 能够使用抽象类约束子类实现 |
| P125-P130 | 接口、接口多实现、接口与抽象类对比 | 能够使用接口定义行为约定 |
分 P 范围为参考区间,实际以课程章节标题为准。
需要掌握的知识点
继承
extends的语法和使用场景- 父类成员的可继承范围与访问权限的关系
- Java 单继承的特点
- 继承层次中构造方法的执行顺序
super访问父类成员和父类构造方法@Override注解的作用和编译期检查价值- 方法重写的规则:名称、参数、返回值和访问权限
- 什么时候应该使用组合而不是继承
多态
- 父类引用指向子类对象的写法
- 多态下成员变量、成员方法和静态方法的访问特点
- 编译看左、运行看右的实际含义
- 向上转型和向下转型
instanceof判断和转型前的类型检查- 使用多态改造条件判断,把
if...else if分支替换为对象多态 - 多态带来的可扩展性:新增子类不需要修改调用方代码
抽象类
abstract修饰类和方法的语法- 抽象类不能被实例化的原因
- 抽象类可以包含构造方法、成员变量和普通方法
- 子类必须实现全部抽象方法,否则子类也需要声明为抽象类
- 使用抽象类定义模板方法,固定流程、变化步骤交给子类
接口
interface定义和implements实现- 接口中的常量、抽象方法、默认方法和静态方法
- 一个类可以实现多个接口
- 接口继承接口
- 接口与抽象类的区别和使用场景
- 面向接口编程:先定义契约,再提供实现
设计能力
- 从需求中识别公共属性和公共行为
- 识别“是什么”(继承)和“能做什么”(接口)的差别
- 使用
equals、toString的替代方案(重写toString便于调试输出) - 类的职责划分:实体类、管理类、工具类各司其职
必做练习
- 继承入门:定义
Person父类和Student、Teacher子类,把姓名、年龄等公共成员上移。 - 访问权限:把父类字段分别设置为
private、默认、protected、public,记录子类能否直接访问。 - 构造顺序:在父类和子类构造方法中分别输出提示,观察创建子类对象时的执行顺序。
- 方法重写:在
Student中重写introduce(),先调用super.introduce()再追加自己的内容。 - 多态调用:使用
Person数组保存Student和Teacher对象,循环调用introduce()并观察结果。 - 类型转换:对
Person引用使用instanceof判断,再向下转型调用子类特有方法;记录不判断就转型的报错。 - 多态改造:把一个用
switch区分角色计算结果的代码,改写成父类引用加方法重写的形式。 - 抽象类:定义抽象类
Shape,包含抽象方法area(),分别实现圆、矩形和三角形子类。 - 接口实现:定义接口
Manageable,包含增删改查方法声明,由StudentManager实现并输出模拟结果。 - 接口与抽象类对比:用表格列出两者的语法差异、继承限制和典型使用场景,并各举一个项目中的例子。
本周综合任务:设计学生信息管理系统的领域模型
为后续项目搭建类结构,本周只完成模型设计和模拟实现,不接入集合、IO 和框架机制。
要求:
- 定义抽象类
Person,包含姓名、性别、年龄等公共属性,以及抽象方法getRole() - 定义
Student和Admin两个子类,分别扩展学号、班级和权限等级等特有属性 - 重写
toString(),让对象可以直接打印成可读内容 - 定义接口
Manageable,约定新增、删除、修改、查询和列表五类操作 - 定义
StudentManager实现该接口,底层先用对象数组保存数据 - 使用多态保存和遍历不同角色的对象
- 在
main方法中准备测试数据,验证多态调用、类型转换和接口方法 - 每个类添加类注释,说明类的职责
本周产出
- 继承、重写、多态和类型转换练习代码
- 抽象类与接口练习代码
- 学生信息管理系统的领域模型(
Person、Student、Admin、Manageable、StudentManager) - 一份类图或结构图,说明类之间的关系
- 一份多态、抽象类和接口的选择依据笔记
完成检查
- 能够使用继承抽取公共属性和方法
- 能够正确重写方法并使用
super扩展父类行为 - 能够说明子类构造方法的执行顺序
- 能够使用父类引用指向子类对象并完成多态调用
- 能够使用
instanceof判断类型并安全完成向下转型 - 能够定义抽象类并约束子类实现
- 能够定义接口并由多个类实现
- 能够说明接口与抽象类的区别和选择依据
- 已完成系统的领域模型,类职责划分清晰