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