java实现多态在工资系统中的应用:给出一个根据雇员类型,利用多态性完成工资单计算的程序。

要求: Employee是抽象类,Employee的子类有Boss(每星期发给他固定工资,而不计工作时间)、CommissionWorker(除基本工资外还根据销售额发放浮动工资)、PieceWorker(按其生产的产品数发放工资)、HourlyWorker(根据工作时间长短发放工资)。该例的Employee的每个子类都声明为final,因为不需要再继承它们生成子类。在主测试类Test中测试各类雇员工资计算结果。
提示: 对所有雇员类型都使用earnings()方法,但每个人挣的工资按他所属的雇员类计算,所有雇员类都继承自父类Employee。在父类中声明earnings()为抽象方法,并且对于每个子类都提供恰当的earnings()的实现方法。为了计算雇员的工资,程序仅仅使用雇员对象的一个父类引用并调用earnings()方法。在一个实际的工资系统中,各种Employee对象的引用可以通过一个Employee引用数组来实现。程序依次使用数组的每个元素(Employee引用)调用每个对象的earnings()方法。

package test;
abstract class Employee{
	
	private String firstName;
	private String lastName;
	public Employee() {}
	public Employee(String first,String last)  {
	  firstName=first;
	  lastName=last;
	}
	public String getEmployeeName()  {
	return firstName;
	}
	public String getLastName()  {
	return lastName;
	}
	public String toString() {
	return firstName+lastName;
	}
	public void show() {};
	public abstract double earnings();
	
}

final class Boss extends Employee{
	private double 固定工资;
	public Boss(String first,String last,double 固定工资) {
		super(first,last);
		this.固定工资=固定工资;
		
	}
	
	public double earnings() {
	
		return 固定工资;
		
	}
	 public void show() {
	    	System.out.println(super.toString()+" "+earnings());
	    }
	
}
final class CommissionWorker extends Employee{
	
	private double 基本工资;
	private double 浮动工资;
	public CommissionWorker(String first,String last,double 基本工资,double 浮动工资) {
		super(first,last);
		this.基本工资=基本工资;
		this.浮动工资=浮动工资;
		
	}
    public double earnings() {
    	
		return 基本工资+浮动工资;
	}
    public void show() {
    	System.out.println(super.toString()+" "+earnings());
    }
}
final class PieceWorker extends Employee{
	private double 产品数;
	private double 价格;
	public PieceWorker(String first,String last,double 产品数,double 价格) {
		super(first,last);
		this.产品数=产品数;
		this.价格=价格;
	}
public double earnings() {
		return 产品数*价格;
	}
public void show() {
	System.out.println(super.toString()+" "+earnings());
}
	
}
final class HourlyWorker extends Employee{
	private double hour;
	private double 价格;
	public HourlyWorker(String first,String last,double hour,double 价格) {
		super(first,last);
		this.hour=hour;
		this.价格=价格;
	}
public double earnings() {
	return hour*价格;	
	}
public void show() {
	System.out.println(super.toString()+" "+earnings());
}
}

public class Test1 {
	
	public static void main(String args[]) {
		
		Employee em[]= new Employee[4];
		Boss zt1 =new Boss("zeng","tao",1000);	
		
		CommissionWorker zt2= new CommissionWorker("li","hua",23,23);
		PieceWorker zt3 =new PieceWorker("zeng","lang",23,23);
		HourlyWorker zt4=new HourlyWorker("zeng","bo",23,34);
		em[0]=zt1;
		em[1]=zt2;
		em[2]=zt3;
		em[3]=zt4;
		for(int i=0;i<em.length;i++)
		{
			em[i].show();
		}
		
		
	}
	

}

运行结果:
在这里插入图片描述

原创文章 45 获赞 7 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41814777/article/details/102712320