You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在STP类构造函数中调用Employee类成员完成数据计算

实现方案

完全可以在STP类的构造函数中完成totalWages的计算,这一设计符合STP作为薪资聚合管理类的职责边界,实现逻辑如下:

改造步骤

  • 首先给Employee类添加私有属性income的公共取值方法,私有属性无法直接被外部类访问,必须通过Getter方法取值
  • 修改STP类的构造函数入参,替换原有直接传入totalWages的逻辑,改为接收全量Employee集合参数
  • 在STP构造函数内部遍历所有Employee实例,累加每个实例的income属性得到totalWages

完整改造代码

Employee.java 补充Getter方法

public class Employee {
    private int hours;
    private double payPerHour;
    private double income;
    
    public Employee (int hours, double payPerHour) {
        this.hours = hours;
        this.payPerHour = payPerHour;
        this.income = hours*payPerHour*52;
    }

    // 新增income的Getter方法
    public double getIncome() {
        return this.income;
    }
}

STP.java 修改构造函数逻辑

import java.util.ArrayList;
import java.util.Date;

public class STP {
    private double totalWages;
        
    // 入参改为全量Employee集合,也可以直接传入你已经实现的Employees类实例
    public STP (ArrayList<Employee> employeeList){
        double sum = 0.0;
        // 遍历累加所有员工的income
        for (Employee emp : employeeList) {
            sum += emp.getIncome();
        }
        this.totalWages = sum;
    }

    // 可选:添加totalWages的Getter方法
    public double getTotalWages() {
        return this.totalWages;
    }
}

适配已有Employees类的优化方案

如果你已经实现的Employees类内部封装了Employee集合,可以直接在Employees类中添加getTotalIncome()方法完成薪资累加,STP构造函数直接调用该方法即可,进一步简化代码逻辑:

// 假设Employees类中已存在存储Employee的ArrayList<Employee> employeeList成员
public double getTotalIncome() {
    double sum = 0.0;
    for (Employee emp : employeeList) {
        sum += emp.getIncome();
    }
    return sum;
}

// STP构造函数可以简化为
public STP (Employees employees){
    this.totalWages = employees.getTotalIncome();
}

内容的提问来源于stack exchange,提问作者Mimi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:57:04