2026年7月22日-作业.md 5.1 KB

2026-07-22 JavaSE 课后作业

课程内容:继承(extends)—— 继承的概念与格式、方法重写(Override)、super 关键字、同名属性处理、变量就近原则、构造方法继承特点

涉及前序知识:封装、构造方法、getter/setter、对象创建

提交方式:在 提交\姓名\ 目录下创建对应的 Java 源文件

截止时间:下次上课前


📌 本次作业重要说明

命名要求

项目 要求
包名 必须按题目指定的包名创建(全小写)
类名 自由命名,但需见名知意(如实体类用 ApplianceTV 等均可)
测试类 建议命名为 TestXxxXxxTest
文件名 必须与类名一致

提交目录结构示例

提交\
└─ 张三\
    ├─ p1_appliance\          ← 第 1 题的包
    │   ├─ Appliance.java       ← 实体类(父类)
    │   ├─ TV.java              ← 实体类(子类)
    │   ├─ WashingMachine.java  ← 实体类(子类)
    │   └─ TestAppliance.java   ← 测试类
    └─ p2_employee\            ← 第 2 题的包
        ├─ Employee.java        ← 实体类(父类)
        ├─ Teacher.java         ← 实体类(子类)
        ├─ Doctor.java          ← 实体类(子类)
        └─ TestEmployee.java    ← 测试类

注意:包名必须严格按题目要求书写(全小写),目录结构必须与包结构一致。


第 1 题:继承入门——Appliance 电器体系 ⭐

包名p1_appliance

知识点:继承的格式、子类调用父类方法

创建一个简单的电器继承体系:

Appliance 类(父类)

  • 方法powerOn() —— 输出 "电器已开机"
  • 方法powerOff() —— 输出 "电器已关机"

TV 类(子类,继承 Appliance)

  • 方法changeChannel() —— 输出 "电视切换频道"

WashingMachine 类(子类,继承 Appliance)

  • 方法startWash() —— 输出 "洗衣机开始洗衣服"

测试类要求(测试类类名自拟,置于 p1_appliance 包下)

  1. 创建 TV 对象,依次调用 powerOn()changeChannel()powerOff() 方法
  2. 创建 WashingMachine 对象,依次调用 powerOn()startWash()powerOff() 方法
  3. 观察子类是否可以直接使用父类的方法

预期输出

电器已开机
电视切换频道
电器已关机
电器已开机
洗衣机开始洗衣服
电器已关机

💡 提示:子类不需要定义 powerOn()powerOff() 方法,直接继承自父类即可使用。


第 2 题:继承 + 构造方法 + 方法重写——Employee 员工体系 ⭐⭐

包名p2_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科室坐诊"

测试类要求(测试类类名自拟,置于 p2_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 题 p1_appliance 继承格式、子类调用父类方法
第 2 题 p2_employee 继承 + 构造方法 + super() + 方法重写 ⭐⭐