员工类 分数 20 作者 温彦 单位 山东科技大学 假定要为某个公司编写雇员工资支付程序,这个公司有各种类型的雇员(Employee),不同类型的雇员按不同的方式支付工资(都是整数):
时间: 2024-09-20 10:13:16 浏览: 128
在编写雇员工资支付程序时,可以创建一个名为"Employee"的抽象基类,该类包含基本的属性如`id`、`name`等通用信息,以及一个抽象方法`calculateSalary()`,用于计算工资,因为具体的工资计算方式根据不同类型的雇员会有所不同。每个具体的雇员类型(比如"Worker", "Manager", "Engineer"等)都应从Employee类派生,并重写`calculateSalary()`方法以适应各自薪酬规则。
例如:
```java
public abstract class Employee {
private int id;
private String name;
// 构造函数和getter/setter省略
public abstract int calculateSalary();
}
class Worker extends Employee {
private double hourlyRate;
public Worker(int id, String name, double hourlyRate) {
super(id, name);
this.hourlyRate = hourlyRate;
}
@Override
public int calculateSalary() {
return (int)(hourlyRate * hoursWorked); // 假设已知每周工作小时数hoursWorked
}
}
class Manager extends Employee {
private double monthlyBasePay;
public Manager(int id, String name, double monthlyBasePay) {
super(id, name);
this.monthlyBasePay = monthlyBasePay;
}
@Override
public int calculateSalary() {
return (int)(monthlyBasePay + bonus); // 假设有月度奖金bonus
}
}
// 类似地,为Engineer等其他类型创建对应的子类并重写calculateSalary()
```
在这个设计中,可以根据雇员的实际类型动态获取并支付相应的工资,实现了多态性,提高了代码的灵活性和可扩展性。
阅读全文