*```java
标题一个公司通常都会存在着不同职位,而不同的职位计算工资的方法也是不相同的。工资可能是固定不变的,也可能是根据销售额或工作量来计算。
假设公司有三种职务:经理、计件工人和计时工人:他们的工资组成分别为:
经理的工资=基本工资+奖金
计件工人的工资=基本工资+产品数量每件的报酬 计时工人的工资=基本工资+工作时间每小时报酬 要求:
1.新建抽象类Salary,有姓名、工号、职位、工资四个属性,类中有构造方法,抽象方法 earning()(作用为计算工资),非抽象方法 setSalary()(修改基本工资),printSalary()方法:打印输出工号、姓名、职位及工资
2.新建终结类Boss继承Salary类,有自己的属性 prize(奖金),构造方法,重写earning()方法,计算经理的工资;增加修改奖金方法set()
3.新建终结类PieceWorker继承Salary类,有自己的属性num(件数)、wagePer(每件的报酬),构造方法,重写earning()方法,计算计件制工人的工资;增加set()方法,作用为设置件数;重载set()方法,设置每件报酬。
4.新建终结类HourWorker,要求与上类似
5.新建测试类SalaryCalDemo,创建上述类的实例并初始化。通过调用set方法,修改相关数据。最终输出三种职务的工资*
abstract class Salary {
String name;
String id;
String status;
int salary;
public Salary(String name,String id,String status,int salary){
this.name =name;
this.id =id;
this.status=status;
this.salary=salary;
}
public Salary() {
}
public void setSalary(){
this.salary=salary;
}
abstract void earning();
public int getSalary(){
return salary;
}
public String toString() {
return "工号:"+id+"\n"+"姓名:"+name+"\n"+"职位:"+status+"\n"+"工资:"+salary;
}
public int printSalary(){
return salary;
}
}
final class Boss extends Salary{
int prize;
public Boss(){
}
public Boss(String name,String id,String status,int salary,int prize){
super(name,id,status,salary);
this.prize=prize;
}
public int getPrize(){
return prize;
}
public void earning(){
salary = getSalary() + getPrize();
System.out.println("经理的工资为:"+salary);
}
public void setPrize(int prize){
this.prize=prize;
}
}
final class PreceWorker extends Salary{
int num,wagePer;
public PreceWorker(){
}
public PreceWorker(String name,String id,String status,int salary,int num,int wagePer){
super(name,id,status,salary);
this.num=num;
this.wagePer=wagePer;
}
public int getNum(){
return num;
}
public void setNum(int num){
this.num=num;
}
public int getWagePer(){
return wagePer;
}
public void setWagePer(int wagePer){
this.wagePer=wagePer;
}
public void earning(){
salary=getSalary()+(getWagePer()*getNum())*30;
System.out.println("计件工人的工资为:"+salary);
}
}
final class HourWorker extends Salary{
int hour,money;
public HourWorker(){
}
public HourWorker(String name,String id,String status,int salary,int hour,int money){
super(name,id,status,salary);
this.hour=hour;
this.money=money;
}
public int getHour() {
return hour;
}
public void setHour(int hour){
this.hour=hour;
}
public int getMoney(){
return money;
}
public void setMoney(int money){
this.money=money;
}
public void earning(){
salary=getSalary()+(getHour()*getMoney())*30;
System.out.println("计时工人的工资是:"+salary);
}
}
public class SalaryCalDemo{
public static void main(String[] args) {
Salary salary= new Boss();
salary.name="陆";
salary.id="666";
salary.status="所长";
salary.salary=10000;
System.out.println(salary);
Boss boss =new Boss("陆","666","所长",10000,5000);
boss.earning();
PreceWorker preceWorker=new PreceWorker("陆","666","所长",10000,100,1);
preceWorker.earning();
HourWorker hourWorker=new HourWorker("陆","666","所长",10000,10,10);
hourWorker.earning();
}
}