62,623
社区成员
发帖
与我相关
我的任务
分享public abstract class Employee {
// 每周的标准工作小时
protected final static int WORKING_HOURS_WEEKLY = 40;
// 时薪
protected final static float WAGE_HOURLY = 10F;
// 基本工资
protected final static float BASE_WAGE = 20F;
// 销售提成
protected final static float PUSH_RATE = 0.01F;
// 计件工资
protected final static float PIECE_WAGE = 5F;
private String firstName;
private String lastName;
// 工资总额
private float wage = 0;
// 总销售额
private float totalSales;
// 总工作时间(周)
private int workingHours;
// 周产量
private int production;
// 构造方法
public Employee(String firstName, String lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
// 计算工资
protected abstract void calculateWage();
// 设置工资
protected void setWage(float wage) {
this.wage += Math.round(wage * 100) / 100F;
}
// 输出工资信息
public void printWage() {
System.out.println(firstName + " " + lastName + ": " + wage);
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public float getWage() {
return this.wage;
}
public int getProduction() {
return production;
}
public void setProduction(int production) {
this.production = production;
}
public float getTotalSales() {
return totalSales;
}
public void setTotalSales(float totalSales) {
this.totalSales = totalSales;
}
public int getWorkingHours() {
return workingHours;
}
public void setWorkingHours(int workingHours) {
this.workingHours = workingHours;
}
}public class Boss extends Employee {
public Boss(String firstName, String lastName) {
super(firstName, lastName);
}
public void calculateWage() {
setWage(BASE_WAGE * 50);
}
}public class CommissionWorker extends Employee {
public CommissionWorker(String firstName, String lastName) {
super(firstName, lastName);
}
public void calculateWage() {
setWage(BASE_WAGE + getTotalSales() * PUSH_RATE);
}
}public class HourlyWorker extends Employee {
public HourlyWorker(String firstName, String lastName) {
super(firstName, lastName);
}
public void calculateWage() {
int workingHours = getWorkingHours();
float wage = workingHours * WAGE_HOURLY;
if(workingHours > WORKING_HOURS_WEEKLY) {
wage += (workingHours - WORKING_HOURS_WEEKLY) * WAGE_HOURLY * 0.5F;
}
setWage(wage);
}
}public class CommissionWorker extends Employee {
public CommissionWorker(String firstName, String lastName) {
super(firstName, lastName);
}
public void calculateWage() {
setWage(BASE_WAGE + getTotalSales() * PUSH_RATE);
}
}public class Test {
public static void main(String[] args) {
Employee boss = new Boss("Bill_a", "Gates");
boss.calculateWage();
boss.printWage();
Employee hourlyWorker = new HourlyWorker("Bill_b", "Gates");
hourlyWorker.setWorkingHours(50);
hourlyWorker.calculateWage();
hourlyWorker.printWage();
Employee pieceWorker = new PieceWorker("Bill_c", "Gates");
pieceWorker.setProduction(120);
pieceWorker.calculateWage();
pieceWorker.printWage();
Employee commissionWorker = new CommissionWorker("Bill_d", "Gates");
commissionWorker.setTotalSales(80000.0f);
commissionWorker.calculateWage();
commissionWorker.printWage();
}
}