编程: 要用到一个Employee雇员类,这个Employee类中有两个属性,分别是雇员的姓名name和当前工资salary,在这个雇员类上加了一些限制: 固定雇员的工资不得低于工资的最低标准3000元 普通雇员每次工资的变化幅度不得高于原工资的20% 经理也是员工,但是每次工资的变化幅度不能高于原工资的30% 为上面的限制定义了两个用户异常IllegalSalaryException和 IllegalSalaryChangeException 并分别定义Employee、Manager类,其中Manager类是Employee类的子类,并编写一个简单的测试类Test,测试员工的最低工资的异常处理和员工工资变化幅度异常的处理。
时间: 2024-03-26 09:40:27 浏览: 77
好的,以下是Employee雇员类、IllegalSalaryException和IllegalSalaryChangeException异常类以及Manager子类的代码实现,以及一个简单的测试类Test:
```java
// 雇员类
class Employee {
private String name; // 雇员姓名
private double salary; // 当前工资
// 构造方法
public Employee(String name, double salary) throws IllegalSalaryException {
if (salary < 3000) {
throw new IllegalSalaryException("员工工资不得低于最低标准3000元");
}
this.name = name;
this.salary = salary;
}
// 获取雇员姓名
public String getName() {
return name;
}
// 获取当前工资
public double getSalary() {
return salary;
}
// 设置工资
public void setSalary(double salary) throws IllegalSalaryChangeException {
double maxChange = 0;
if (this instanceof Manager) { // 经理每次工资变化幅度不能超过30%
maxChange = this.salary * 0.3;
} else { // 普通员工每次工资变化幅度不能超过20%
maxChange = this.salary * 0.2;
}
if (Math.abs(salary - this.salary) > maxChange) {
throw new IllegalSalaryChangeException("员工工资变化幅度不能超过原工资的20%或30%");
}
this.salary = salary;
}
}
// 经理类
class Manager extends Employee {
// 构造方法
public Manager(String name, double salary) throws IllegalSalaryException {
super(name, salary);
}
}
// 工资异常类
class IllegalSalaryException extends Exception {
// 构造方法
public IllegalSalaryException(String message) {
super(message);
}
}
// 工资变化幅度异常类
class IllegalSalaryChangeException extends Exception {
// 构造方法
public IllegalSalaryChangeException(String message) {
super(message);
}
}
// 测试类
public class Test {
public static void main(String[] args) {
try {
Employee e1 = new Employee("张三", 2000); // 抛出IllegalSalaryException异常
} catch (IllegalSalaryException e) {
System.out.println("创建员工失败:" + e.getMessage());
}
try {
Employee e2 = new Employee("李四", 4000);
e2.setSalary(5000); // 抛出IllegalSalaryChangeException异常
} catch (IllegalSalaryException | IllegalSalaryChangeException e) {
System.out.println("设置工资失败:" + e.getMessage());
}
try {
Manager m1 = new Manager("王五", 6000);
m1.setSalary(7000); // 正常设置工资
} catch (IllegalSalaryException | IllegalSalaryChangeException e) {
System.out.println("设置工资失败:" + e.getMessage());
}
}
}
```
在测试类中,分别创建了一个工资低于最低标准的员工、一个员工工资变化幅度超过20%的员工和一个经理,测试了异常处理的功能。
阅读全文
相关推荐



















