课后作业.docx

preview
需积分: 0 0 下载量 79 浏览量 更新于2024-03-12 收藏 19KB DOCX 举报
### 练习1:补全Salary类并实现输出员工基本信息及薪水 #### 代码解析: 在练习1中,我们被要求补全`Salary`类,使其能够继承自`Employee`类,并实现输出员工基本信息和薪水的功能。以下是具体的实现步骤: 1. **Employee类**: ```java class Employee { private String name; // 员工姓名 private String birth; // 出生年月 private String position; // 职位 // 使用有参构造方法初始化 Employee public Employee(String name, String birth, String position) { this.name = name; this.birth = birth; this.position = position; } // 定义introduction方法输出员工信息 public void introduction() { System.out.println("员工姓名:" + name + "\n 出生年月:" + birth + "\n 职位:" + position); } } ``` 2. **Salary类**: ```java public class Salary extends Employee { private double salary; // 薪水 // 请在下面的 Begin-End 之间按照注释中给出的提示编写正确的代码 /********* Begin *********/ // 定义 Salary 的有参构造方法,同时在子类中指代父类构造器 public Salary(String name, String birth, String position, double salary) { super(name, birth, position); this.salary = salary; } // 重写 introduction 方法,使用 super 保留父类原有的功能,新添输出员工薪水的功能 @Override public void introduction() { super.introduction(); System.out.println("薪水:" + salary); } /********** End **********/ } ``` #### 测试类实现: 为了验证`Salary`类的功能是否正确实现,我们需要编写一个测试类来实例化`Salary`对象并调用其`introduction`方法。 ```java public class SalaryTest { public static void main(String[] args) { Salary employee = new Salary("张三", "1990-01-01", "软件工程师", 8000.50); employee.introduction(); // 输出员工信息和薪水 } } ``` ### 练习2:定义Person类和Student类 #### 代码解析: 接下来的任务是定义`Person`类和`Student`类,这两个类之间的关系为继承关系。 1. **Person类**: ```java // 声明一个名为 Person 的类,里面有 name 与 age 两个属性,分别为 String 和 int 型,并声明一个含有两个参数的构造方法 class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } } ``` 2. **Student类**: ```java // 声明一个名为 Student 的类,此类继承自 Person 类,添加一个属性 school,字符串类型 // 在子类的有参构造方法中调用父类中有两个参数的构造方法 class Student extends Person { private String school; public Student(String name, int age, String school) { super(name, age); this.school = school; } // 可以添加一个方法输出学生信息 public void printInfo() { System.out.println("姓名:" + getName() + ", 年龄:" + getAge() + ", 学校:" + school); } } ``` #### 测试类实现: ```java public class StudentTest { public static void main(String[] args) { Student student = new Student("李四", 20, "清华大学"); student.printInfo(); // 输出学生信息 } } ``` ### 练习3:计算球的表面积 #### 代码解析: 练习3要求我们在`Sphere`类中重写`Shape`类中的`area`方法来计算球的表面积。 1. **Shape类**: ```java class Shape { private double r; // 球的半径 // 球的体积 public double area() { double s = (double)4/3 * Math.PI * Math.pow(r, 3); // 这里计算的是球的体积,需要修改 return s; } } ``` 2. **Sphere类**: ```java public class Sphere extends Shape { private double r; // 球的半径 public Sphere(double r) { this.r = r; } // 请在下面的 Begin-End 之间按照注释中给出的提示编写正确的代码 /********* Begin *********/ // 重写 Shape 中的 area 方法,计算球的表面积,将计算结果返回 @Override public double area() { return 4 * Math.PI * Math.pow(r, 2); // 计算球的表面积 } /********** End **********/ } ``` #### 测试类实现: ```java public class SphereTest { public static void main(String[] args) { Sphere sphere = new Sphere(5.0); System.out.println("球的表面积:" + sphere.area()); } } ``` ### 练习4:定义员工抽象类Employee #### 代码解析: 练习4要求我们定义一个抽象类`Employee`以及一个具体的类`Manager`,后者继承前者。 1. **Employee抽象类**: ```java abstract class Employee { protected String name; // 姓名 protected double salary; // 工资 public Employee(String name, double salary) { this.name = name; this.salary = salary; } public abstract void work(); // 抽象方法 work public abstract void info(); // 抽象方法 info } ``` 2. **Manager类**: ```java class Manager extends Employee { private String gender; // 岗位级别 public Manager(String name, double salary, String gender) { super(name, salary); this.gender = gender; } // 实现抽象方法 @Override public void work() { System.out.println(name + "正在管理团队。"); } @Override public void info() { System.out.println("姓名:" + name + ", 工资:" + salary + ", 岗位级别:" + gender); } } ``` #### 测试类实现: ```java public class ManagerTest { public static void main(String[] args) { Manager manager = new Manager("王五", 12000.0, "高级经理"); manager.work(); // 调用工作内容 manager.info(); // 输出员工信息 } } ``` 以上就是四个练习的详细代码实现和测试类示例。通过这些示例,我们可以看到如何实现类的继承、抽象类的使用以及方法的重写等Java面向对象编程的核心概念。
ling202300
  • 粉丝: 0
  • 资源: 1
上传资源 快速赚钱
voice
center-task 前往需求广场,查看用户热搜

最新资源