编写一个工具类来处理 1- Persion子类工资的打印输出; 2- Persion数组的输出 3- 获得Persion数组中全部salary的和; 4- 自由发挥,修改相应类,体验多态
时间: 2024-10-21 18:17:25 浏览: 4
Persion-wfc-lw:wfc 和 lw 添加 java&Android 项目
在Java中,我们可以创建一个名为`Utils`的工具类,用于处理各种类型的`Person`对象操作,包括工资打印、数组输出以及计算总薪水。这里是一个简单的示例:
```java
// 定义Person接口或基类
public interface Person {
double getSalary();
}
// 具体的Person子类
class Employee extends Person {
private double salary;
public Employee(double salary) {
this.salary = salary;
}
@Override
public double getSalary() {
return salary;
}
}
class Contractor extends Person {
private double hourlyRate;
public Contractor(double hourlyRate) {
this.hourlyRate = hourlyRate;
}
// 自由发挥:假设Contractor按小时计薪
@Override
public double getSalary() {
return hourlyRate * hoursWorked;
} // 假设hoursWorked是个属性
}
// 工具类Utils
public class Utils {
// 打印单个Person的工资
public static void printSalary(Person person) {
System.out.println("Person's Salary: " + person.getSalary());
}
// 输出Person数组
public static void printArray(Person[] persons) {
for (Person p : persons) {
printSalary(p);
System.out.println(); // 每个人之间换行
}
}
// 计算Person数组中所有工资的和
public static double calculateTotalSalary(Person[] persons) {
double total = 0;
for (Person person : persons) {
total += person.getSalary();
}
return total;
}
}
```
为了体验多态,你可以创建不同的`Person`实例并传递给上述工具类的函数,它们会自动适应传入的具体子类类型。例如:
```java
public class Main {
public static void main(String[] args) {
// 创建Employee和Contractor数组
Person[] employees = {new Employee(5000), new Employee(6000)};
Person[] contractors = {new Contractor(30), new Contractor(40)};
// 使用统一的Utils方法处理
Utils.printArray(employees);
System.out.println("Total Salary of Employees: " + Utils.calculateTotalSalary(employees));
Utils.printArray(contractors);
System.out.println("Total Hourly Pay of Contractors: " + Utils.calculateTotalSalary(contractors));
}
}
```
阅读全文