课后作业.docx
需积分: 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
最新资源
- 遗传算法带时间窗车辆路径规划问题VRPTW 内容:MATLAB程序完整源代码 用遗传算法求解工业园自主导航AGV快递配送车路径规划及投入AGV数量 详情:通过txt文档给定各客户坐标位置、方便取快
- 基于springboot高校就业招聘系统 - 编程语言:Java - 数据库:MySQL - 前端技术:Vue - 后端技术:SpringBoot全部资料+详细文档.zip
- 基于SSH(Struts2+Spring+Hibernate)搭建的失物招领平台,进行简单修改即可用于各高校失物招领。全部资料+详细文档.zip
- 基于SpringBoot框架的模拟高校招生的平行志愿录取系统全部资料+详细文档.zip
- 基于SSM的高校共享单车管理系统全部资料+详细文档.zip
- 基于SSM的高校人事招聘管理系统全部资料+详细文档.zip
- 基于SSM的高校考务管理系统,项目部署环境为腾讯云全部资料+详细文档.zip
- 基于ThinkPHP的高校班级管理系统全部资料+详细文档.zip
- 基于ssm高校学籍管理系统毕业源码案例设计全部资料+详细文档.zip
- 基于SSM框架的高校实验室管理系统全部资料+详细文档.zip
- 基于VC++的高校教材管理系统全部资料+详细文档.zip
- 基于Vue+Springboot高校失物招领系统设计毕业源码案例设计全部资料+详细文档.zip
- 基于Vue和SpringBoot的高校固定资产管理系统,用于实现高校对固定资产的管理需求,包含资产品类、资产单位、资产仓库、资产供应商、资产库存、资产采购、资产
- 基于Vue高校选课系统全部资料+详细文档.zip
- 基于Vue2+Spring Boot+Element-UI 的前后端分离项目高校二手物品交易平台全部资料+详细文档.zip
- Securecrt 9.6.1