1.BasePlusSaleEmployee
package cn.hp.Demo3;
public class BasePlusSaleEmployee extends SalesEmployee{
private double baseSalary;
public double getBaseSalary() {
return baseSalary;
}
public void setBaseSalary(double baseSalary) {
this.baseSalary = baseSalary;
}
public BasePlusSaleEmployee(String name, int month, double monthSum, double upRate, double baseSalary) {
super(name, month, monthSum, upRate);
this.baseSalary = baseSalary;
}
public BasePlusSaleEmployee(double baseSalary) {
this.baseSalary = baseSalary;
}
@Override
public double salary(int month) {
double finalSalary = baseSalary + super.getUpRate() * super.getMonthSum();
if (super.getMonth() == month){
finalSalary += 400;
System.out.println(super.getName() + "过生日,奖励400元");
}
return finalSalary;
}
}
二。Employee
package cn.hp.Demo3;
public abstract class Employee {
private String name;
private int month;
public abstract double salary(int month);
public Employee() {
}
public Employee(String name, int month) {
this.name = name;
this.month = 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;
}
}
三.HourlyEmployee
package cn.hp.Demo3; public class HourlyEmployee extends Employee{ private double hourSalary; private int hours; public HourlyEmployee(double hourSalary, int hours) { this.hourSalary = hourSalary; this.hours = hours; } public HourlyEmployee(String name, int month, double hourSalary, int hours) { super(name, month); this.hourSalary = hourSalary; this.hours = hours; } public double getHourSalary() { return hourSalary; } public void setHourSalary(double hourSalary) { this.hourSalary = hourSalary; } public int getHours() { return hours; } public void setHours(int hours) { this.hours = hours; } @Override public double salary(int month) { double salary = 0; //判断每月工作时长是否超过160小时 if (hours > 160){ salary = 160 * this.hourSalary + (this.hours - 160) * 1.5 * this.hourSalary; } //判断这个月是否过生日 if (super.getMonth() == month){ salary += 100; System.out.println(super.getName() + "本月过生日,奖励100元"); } return salary; } } 四.SalariedEmployee
package cn.hp.Demo3;
public class SalariedEmployee extends Employee{
private double monthSalary;
public SalariedEmployee(double monthSalary) {
this.monthSalary = monthSalary;
}
public SalariedEmployee(String name, int month, double monthSalary) {
super(name, month);
this.monthSalary = monthSalary;
}
public double getMonthSalary() {
return monthSalary;
}
public void setMonthSalary(double monthSalary) {
this.monthSalary = monthSalary;
}
@Override
public double salary(int month) {
double salary = this.monthSalary;
if (super.getMonth() == month){
salary += 100;
System.out.println(super.getName() + "本月过生日,奖励100元");
}
return salary;
}
}
五.SalesEmployee
package cn.hp.Demo3;
public class SalesEmployee extends Employee{
private double monthSum;
private double upRate;
public SalesEmployee(double monthSum, double upRate) {
this.monthSum = monthSum;
this.upRate = upRate;
}
public SalesEmployee(String name, int month, double monthSum, double upRate) {
super(name, month);
this.monthSum = monthSum;
this.upRate = upRate;
}
@Override
public double salary(int month) {
double salary = this.monthSum * this.upRate;
if (super.getMonth() == month){
salary += 100;
System.out.println(super.getName() + "本月过生日,奖励100元");
}
return salary;
}
public SalesEmployee() {
}
public double getMonthSum() {
return monthSum;
}
public void setMonthSum(double monthSum) {
this.monthSum = monthSum;
}
public double getUpRate() {
return upRate;
}
public void setUpRate(double upRate) {
this.upRate = upRate;
}
}
六.Test
package cn.hp.Demo3; public class Test { public static void main(String[] args) { Employee[] employees = new Employee[10]; employees[0] = new SalariedEmployee("刘志山",3,3000); employees[1] = new HourlyEmployee("李达",4,15.0,240); employees[2] = new SalesEmployee("李信",6,5000,2); employees[3] = new BasePlusSaleEmployee("小水", 6, 5000.0, 1, 3500); for (int i = 0; i < employees.length; i++){ if (employees[i] != null){ double salary = employees[i].salary(2); System.out.println(employees[i].getName() + "的工资是" + salary); } } } }