Java 继承实现员工工资核算打印:部门经理与普通员工示例
Java 继承实现员工工资核算打印:部门经理与普通员工示例
本文将通过 Java 代码示例演示如何使用继承实现员工工资核算打印功能。
需求:
- 定义员工类 (Employee),包含姓名、单日工资、工作天数等属性。
- 定义部门经理类 (Manager) 和普通员工类 (Worker),分别继承员工类。
- 部门经理工资 = 1000 + 单日工资 * 天数 * 等级 (1.2) = 奖金 + 基本工资
- 普通员工工资 = 单日工资 * 天数 * 等级 (1.0) = 基本工资
- 每个员工类都需要重写打印工资方法,输出工资信息。
代码实现:
// 员工类
class Employee {
protected String name;
protected double dailyWage;
protected int workingDays;
public Employee(String name, double dailyWage, int workingDays) {
this.name = name;
this.dailyWage = dailyWage;
this.workingDays = workingDays;
}
public void printSalary() {
System.out.println('姓名:' + name);
System.out.println('基本工资:' + calculateSalary());
}
protected double calculateSalary() {
return dailyWage * workingDays;
}
}
// 部门经理类
class Manager extends Employee {
private double bonus;
private double level;
public Manager(String name, double dailyWage, int workingDays, double bonus, double level) {
super(name, dailyWage, workingDays);
this.bonus = bonus;
this.level = level;
}
@Override
protected double calculateSalary() {
return bonus + super.calculateSalary() * level;
}
}
// 普通员工类
class Worker extends Employee {
private double level;
public Worker(String name, double dailyWage, int workingDays, double level) {
super(name, dailyWage, workingDays);
this.level = level;
}
@Override
protected double calculateSalary() {
return super.calculateSalary() * level;
}
}
// 测试类
public class Test {
public static void main(String[] args) {
Worker worker = new Worker('张三', 100, 20, 1.0);
worker.printSalary();
System.out.println();
Manager manager = new Manager('李四', 100, 20, 1000, 1.2);
manager.printSalary();
}
}
代码说明:
- 员工类 (Employee) 是父类,包含基本信息和计算基本工资的方法。
- 部门经理类 (Manager) 和普通员工类 (Worker) 继承员工类,并重写了计算工资方法,分别添加了奖金和等级系数。
- 测试类 (Test) 中创建了普通员工和部门经理对象,并调用其打印工资方法,输出工资信息。
运行结果:
姓名:张三
基本工资:2000.0
姓名:李四
基本工资:2600.0
通过以上代码,可以清楚地看到如何利用 Java 的继承和多态性来实现灵活的工资计算功能。不同的员工类型可以拥有不同的工资计算方法,而无需重复编写代码。
总结:
- 使用继承可以实现代码复用,提高代码可读性和可维护性。
- 多态性允许不同的子类拥有不同的实现方式,从而实现灵活的工资计算功能。
- 本文示例仅为简单演示,实际应用中可能需要根据具体需求进行调整和扩展。
原文地址: https://www.cveoy.top/t/topic/NgH 著作权归作者所有。请勿转载和采集!