题目描述
定义一个表示职员的抽象类Employee,包括一个返回工资的抽象方法public abstract double earnings();
职员分为年薪(36000元/年)、月薪(10000元/月)、周薪(2000元/周)三种类型。分别定义这种类型的职员类,实现抽象类Employee。
定义一个公司类Company,该公司封装有一个职员数组Employee[],以及计算公司每年支付工资总额的salariesPay()方法。
假设该公司职员数组Employee[]中,序号为3的倍数的员工为周薪工人,序号为3的倍数余1的员工为月薪工人,其余为年薪工人。
在Example2_2类的主方法中,建立一个公司对象,并计算该公司每年支付工资总额。
源代码
抽象类Employee:
public abstract class Employee {
public abstract double earnings();
}
年薪职员类:
public class YearWorker extends Employee {
private static final double SALARY_PER_YEAR = 36000.0;
@Override
public double earnings() {
return SALARY_PER_YEAR;
}
}
月薪职员类:
public class MonthWorker extends Employee {
private static final double SALARY_PER_MONTH = 10000.0;
@Override
public double earnings() {
return SALARY_PER_MONTH * 12;
}
}
周薪职员类:
public class WeekWorker extends Employee {
private static final double SALARY_PER_WEEK = 2000.0;
@Override
public double earnings() {
return SALARY_PER_WEEK * 52;
}
}
公司类:
public class Company {
private Employee[] employees;
public Company(int numEmployees) {
employees = new Employee[numEmployees];
for (int i = 0; i < numEmployees; i++) {
if ((i + 1) % 3 == 0) {
employees[i] = new WeekWorker();
} else if ((i + 1) % 3 == 1) {
employees[i] = new MonthWorker();
} else {
employees[i] = new YearWorker();
}
}
}
public double salariesPay() {
double totalSalaries = 0;
for (Employee e : employees) {
totalSalaries += e.earnings();
}
return totalSalaries;
}
}
在主方法中,创建一个公司对象,并计算该公司每年支付工资总额:
public class Example2_2 {
public static void main(String[] args) {
Company company = new Company(30);
double totalSalaries = company.salariesPay();
System.out.println("该公司每年支付工资总额为:" + totalSalaries + "元。");
}
}
这个程序的核心是抽象类Employee
,其中定义了一个抽象方法earnings()
,用于返回每种职员类型的工资。
年薪、月薪、周薪职员类分别继承自Employee
,并实现了earnings()
方法,根据不同的职员类型计算出相应的工资。
公司类Company
封装了一个职员数组Employee[]
,以及计算公司每年支付工资总额的salariesPay()
方法。在构造函数中,根据职员序号的不同,创建不同类型的职员对象,并将它们存储到数组中。在计算工资总额时,遍历数组中的所有职员对象,并调用它们各自的earnings()
方法来计算工资。最后返回总工资。
在主方法中,创建一个公司对象,传入职员数量作为参数,然后调用公司对象的salariesPay()
方法,得到该公司每年支付工资总额,并输出结果。
© 版权声明
本站资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!
THE END