案例:员工薪资管理系统(核心:抽象类 + 继承 + 多态 + static)

张开发
2026/4/9 20:13:58 15 分钟阅读

分享文章

案例:员工薪资管理系统(核心:抽象类 + 继承 + 多态 + static)
需求1. 定义抽象类Employee包含**final 属性工号**、姓名、私有静态属性公司名称、静态方法统一修改公司名称2. 抽象方法calculateSalary()计算薪资子类必须实现3. 实现两个子类FullTimeEmployee全职员工固定月薪、PartTimeEmployee兼职员工时薪 × 工作时长4. 利用多态遍历员工数组统一打印员工信息和薪资5. 静态属性全局生效所有员工共享公司名称。**打印结果:**公司互联网科技公司 | 工号1001 | 姓名张三 | 薪资8000.0公司互联网科技公司 | 工号1002 | 姓名李四 | 薪资5000.0代码/** * 抽象员工类抽象类 * 包含final工号、姓名、静态公司名、抽象薪资方法 */ abstract class Employee { // final 修饰的工号不可修改 protected final String id; // 姓名 protected String name; // 私有静态属性公司名称所有员工共享 private static String companyName; // 构造方法 public Employee(String id, String name) { this.id id; this.name name; } // 抽象方法计算薪资子类必须实现 public abstract double calculateSalary(); // 静态方法统一修改公司名称 public static void setCompanyName(String company) { companyName company; } // 获取公司名称 public static String getCompanyName() { return companyName; } // 获取工号 public String getId() { return id; } // 获取姓名 public String getName() { return name; } } /** * 全职员工继承抽象类 Employee * 薪资 固定月薪 */ class FullTimeEmployee extends Employee { // 全职员工固定月薪 private double monthlySalary; public FullTimeEmployee(String id, String name, double monthlySalary) { super(id, name); this.monthlySalary monthlySalary; } // 重写抽象方法计算薪资 Override public double calculateSalary() { return monthlySalary; } } /** * 兼职员工继承抽象类 Employee * 薪资 时薪 × 工作时长 */ class PartTimeEmployee extends Employee { // 兼职员工时薪、工作时长 private double hourlyRate; private int workHours; public PartTimeEmployee(String id, String name, double hourlyRate, int workHours) { super(id, name); this.hourlyRate hourlyRate; this.workHours workHours; } // 重写抽象方法计算薪资 Override public double calculateSalary() { return hourlyRate * workHours; } } /** * 测试类多态遍历 打印信息 */ public class EmployeeSalarySystem { public static void main(String[] args) { // 静态方法统一设置公司名称 Employee.setCompanyName(互联网科技公司); // 创建员工数组多态父类引用指向子类对象 Employee[] employees { new FullTimeEmployee(1001, 张三, 8000), new PartTimeEmployee(1002, 李四, 100, 50) }; // 遍历打印员工信息 薪资 for (Employee emp : employees) { System.out.println(公司 Employee.getCompanyName() | 工号 emp.getId() | 姓名 emp.getName() | 薪资 emp.calculateSalary()); } } }运行结果公司互联网科技公司 | 工号1001 | 姓名张三 | 薪资8000.0公司互联网科技公司 | 工号1002 | 姓名李四 | 薪资5000.0核心抽象知识点抽象类Employee用abstract修饰不能实例化只做员工模板抽象方法calculateSalary()没有方法体强制子类必须重写final 属性工号一旦赋值不可修改保证数据安全static 静态资源公司名称属于整个类所有员工共享可通过静态方法统一修改多态使用Employee[]数组存储不同子类对象统一调用方法扩展性极强继承子类继承抽象父类必须实现所有抽象方法否则编译报错。

更多文章