一个公司通常都会存在着不同职位,而不同的职位计算工资的方法也是不相同的。工资可能是固定不变的,也可能是根据销售额或工作量来计算。
假设公司有三种职务:经理、计件工人和计时工人:他们的工资组成分别为:
经理的工资=基本工资+奖金
计件工人的工资=基本工资+产品数量*每件的报酬
计时工人的工资=基本工资+工作时间*每小时报酬
要求:
1.新建抽象类Salary,有姓名、工号、职位、工资四个属性,类中有构造方法,抽象方法earning()(作用为计算工资),非抽象方法setSalary()(修改基本工资),printSalary()方法:打印输出工号、姓名、职位及工资
2.新建终结类Boss继承Salary类,有自己的属性prize(奖金),构造方法,重写earning()方法,计算经理的工资;增加修改奖金方法set()
3.新建终结类PieceWorker继承Salary类,有自己的属性num(件数)、wagePer(每件的报酬),构造方法,重写earning()方法,计算计件制工人的工资;增加set()方法,作用为设置件数;重载set()方法,设置每件报酬。
4.新建终结类HourWorker,要求与上类似
5.新建测试类SalaryCalDemo,创建上述类的实例并初始化。通过调用set方法,修改相关数据。最终输出三种职务的工资
public abstract class Salary {
//姓名、工号、职位、工资
private String name;
private String workno;
private String work;
private int salary;
public Salary() {
}
public Salary(String name, String workno, String work, int salary) {
this.name = name;
this.workno = workno;
this.work = work;
this.salary = salary;
}
public abstract int earning();
public void setSalary(int salary){
this.salary=salary;
}
public int printSalary(){
return salary;
}
@Override
public String toString() {
return "Salary{" +
"name='" + name + '\'' +
", workno='" + workno + '\'' +
", work='" + work + '\'' +
", salary=" + salary +
'}';
}
}