要求有一个 abstract 类,类名为 Employee。Employee 类有一个 abstract 方法:public abstract double earnings();

要求有一个 abstract 类,类名为 Employee。Employee 的子类有 YearWorker、MonthWorker、WeekWorker。YearWorker 对象按年领取薪水,MonthWorker 按月领取薪水,WeekWorker 按周领取薪水。Employee 类有一个 abstract 方法:

public abstract double earnings();

子类必须重写父类的 earnings()方法,给出各自领取报酬的具体方式。有一个 Company 类,该类用 Employee 对象数组作为成员,Employee 对象数组的单元可以是 YearWorker 对象的上转型对象、MonthWorker 对象的上转型对象或 WeekWorker 对象的上转型对象。程序能输出 Company 对象一年需要支付的薪水总额。

abstract class Employee {
   public abstract double earnings();
}
class YearWorker extends Employee {
	int YearWorker;
	double yearSalary;
	YearWorker(int y, double s){
		YearWorker = y;
		yearSalary = s;
	}
	public double earnings(){ 
		return YearWorker * yearSalary;
	}   //重写earnings()方法
}
class MonthWorker extends Employee {
	int MonthWorker;
	double monthSalary;
	MonthWorker(int m, double s){
		MonthWorker = m;
		monthSalary = s;
	}
	public double earnings(){ 
		return MonthWorker * monthSalary;
	}	 //重写earnings()方法
}
class WeekWorker extends Employee {
	int WeekWorker;
	double weekSalary;
	WeekWorker(int w, double s){
		WeekWorker = w;
		weekSalary = s;
	}
	public double earnings(){ 
		return WeekWorker * weekSalary;
	} 	 //重写earnings()方法。
}
class Company {
   Employee[] employee;
   double salaries=0;
   Company(Employee[] employee) {
      this.employee=employee;
   }
   public double salariesPay() {
       salaries=0;
       salaries = employee[0].earnings() + employee[1].earnings() + employee[2].earnings();
      //计算salaries。
       return salaries;
   }    
}
public class CompanySalary {
   public static void main(String args[]) {
	   Employee[] employee=new Employee[29]; //公司有29名雇员
	   for(int i=0;i<employee.length;i++) {   //雇员简单地分成三类
		   if(i%3==0)
			   employee[i]=new WeekWorker(16,1200.0);
		   else if(i%3==1)
			   employee[i]=new MonthWorker(11,8000.0);
		   else if(i%3==2)
			   employee[i]=new YearWorker(2,120000.0);
	   } 
	   Company company=new Company(employee);
	   System.out.println("公司薪水总额:"+company.salariesPay()+"元");
   }
}

  • 8
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个经典的面向对象编程问题。以下是一个可能的解决方案: ```java abstract class Employee { public abstract double earnings(); } class YearWorker extends Employee { private double salary; public YearWorker(double salary) { this.salary = salary; } public double earnings() { return salary; } } class MonthWorker extends Employee { private double salary; public MonthWorker(double salary) { this.salary = salary; } public double earnings() { return salary * 12; } } class WeekWorker extends Employee { private double salary; public WeekWorker(double salary) { this.salary = salary; } public double earnings() { return salary * 52; } } class Company { private Employee[] employees; public Company(Employee[] employees) { this.employees = employees; } public double calculateTotalSalary() { double total = 0; for (Employee e : employees) { total += e.earnings(); } return total; } } // 测试代码 Employee[] employees = { new YearWorker(10000), new MonthWorker(8000), new WeekWorker(2000) }; Company company = new Company(employees); System.out.println("Total salary: " + company.calculateTotalSalary()); ``` 输出结果应该是: ``` Total salary: 156000.0 ``` 这个程序中,我们定义了一个抽象 `Employee`,它有一个抽象方法 `earnings()`,表示计算员工的收入。然后我们定义了三个具体的子类 `YearWorker`、`MonthWorker`、`WeekWorker`,分别表示按年、按月、按周领取薪水的员工。这些子类都实现了 `earnings()` 方法,根据自己的领取方式计算收入。 最后我们定义了一个 `Company` ,它有一个成员变量 `employees`,表示公司的员工数组。`Company` 类有一个方法 `calculateTotalSalary()`,用于计算公司一年需要支付的薪水总额。这个方法遍历 `employees` 数组,调用每个员工的 `earnings()` 方法,累加收入即可。 希望这个解决方案能够满足你的需求。如果你有任何问题或建议,请随时告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值