能否在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
相关产品推荐
相关产品推荐

