* 定义Employee员工类,包括姓名name,出生月份birthMonth等成员变量;
* 有getSalary(int month)方法获取员工指定月份的工资,如果该月员工生日,公司额外奖励250元
* 定义SalariedEmployee有固定工资的员工类,有月薪monthlySalary
* 定义HourlyEmployee小时工类,包括工作小时数hours和每小时的工资hourlySalary成员变量,如果每月工作超过160小时,超过的部分按1.5倍工资发放
* 定义SalesEmployee销售人员类,包括月销售额sales和提成比例commission成员变量
代码如下:
Employee类:
public class Employee {
private String name;
private int birthMonth;
//返回某个月的工资
public double getSalary(int month){
if(month==birthMonth){
return 250;
}
return 0;
}
//构造方法
public Employee(String name, int birthMonth) {
super();
this.name = name;
this.birthMonth = birthMonth;
}
}
SalariedEmployee类:
public class SalariedEmployee extends Employee {
int monthlySalary;
//构造方法
public SalariedEmployee(String name, int birthMonth, int monthlySalary) {
super(name, birthMonth);
this.monthlySalary = monthlySalary;
}
@Override
public double getSalary(int month){
return super.getSalary(month)+monthlySalary;
}
}
HourlyEmployee类:
public class HourlyEmployee extends Employee {
int hours;
int hourlySalary;
//构造方法
public HourlyEmployee(String name, int birthMonth, int hours,
int hourlySalary) {
super(name, birthMonth);
this.hours = hours;
this.hourlySalary = hourlySalary;
}
@Override
public double getSalary(int month){
if(hours>160){
return super.getSalary(month)+hourlySalary*hours+(hours-160)*hourlySalary*0.5;
}
else{
return super.getSalary(month)+hourlySalary*hours;
}
}
}
SalesEmployee类:
public class SalesEmployee extends Employee {
int sales;
double commission;
//构造方法
public SalesEmployee(String name, int birthMonth, int sales,
double commission) {
super(name, birthMonth);
this.sales = sales;
this.commission = commission;
}
@Override
public double getSalary(int month){
return super.getSalary(month)+sales*commission;
}
}