课后作业3
Cola公司的雇员分为以下若干类:
4.1 ColaEmployee :这是所有员工总的父类,属性:员工的姓名,员工的生日月份。方法:getSalary(int month) 根据参数月份来确定工资,如果该月员工过生日,则公司会额外奖励100 元。
4.2 SalariedEmployee : ColaEmployee 的子类,拿固定工资的员工。属性:月薪
4.3 HourlyEmployee :ColaEmployee 的子类,按小时拿工资的员工,每月工作超出160 小时的部分按照1.5 倍工资发放。属性:每小时的工资、每月工作的小时数
4.4 SalesEmployee :ColaEmployee 的子类,销售人员,工资由月销售额和提成率决定。属性:月销售额、提成率
4.5 定义一个类Company,在该类中写一个方法,调用该方法可以打印出某月某个员工的工资数额,写一个测试类TestCompany,在main方法,把若干各种类型的员工放在一个ColaEmployee 数组里,并单元出数组中每个员工当月的工资。
abstract class ColaEmployee{
private String name;
private int month;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
this.month = month;
}
public ColaEmployee(String name,int month) {
this.name = name;
this.month = month;
}
public abstract double getSalary(int month);
}
class SalariedEmployee extends ColaEmployee{
public SalariedEmployee(String name,int month,double sal) {
super(name,month);
this.sal = sal;
}
private double sal;
@Override
public double getSalary(int month) {
if(month == this.getMonth()) {
return sal + 100;
}
return sal;
}
}
class HourlyEmployee extends ColaEmployee{
private double hourSal;
private double hour;
public HourlyEmployee(String name, int month,double hourSal,double hour) {
super(name, month);
this.hour = hour;
this.hourSal = hourSal;
}
@Override
public double getSalary(int month) {
double sal;
if(hour > 160) {
sal = (hour-160)*this.hourSal*1.5+ 160 * this.hourSal;
}else {
sal = hour * this.hourSal;
}
if(month == this.getMonth()) {
return sal + 100;
}
return sal;
}
}
class SalesEmployee extends ColaEmployee{
private double saleMoney;
private double p;
public SalesEmployee(String name, int month,double saleMoney,double p) {
super(name, month);
this.saleMoney = saleMoney;
this.p = p;
}
@Override
public double getSalary(int month) {
double sal = saleMoney * p;
if(month == this.getMonth()) {
return sal + 100;
}
return sal;
}
}
class Company{
public static void printSal(int month,ColaEmployee colaEmployee) {
double salary = colaEmployee.getSalary(month);
System.out.println(colaEmployee.getName()+"的"+month+"月份的工资为:"+salary);
}
}
public class Test {
public static void main(String[] args) {
ColaEmployee[] emps = new ColaEmployee[3];
emps[0] = new SalariedEmployee("tom",5,4000);
emps[1] = new HourlyEmployee("marry",6,20,170);
emps[2] = new SalesEmployee("scott",5,1000000,0.008);
for(ColaEmployee emp : emps) {
Company.printSal(5, emp);
}
}
}