/* Example illustrating polymorphism. Adapted from Barry Holmes, page 287. */ class Worker { protected String nameOfWorker; protected float hoursWorked; protected float rateOfPay; public Worker(String name) { nameOfWorker = name; } public String getName() { return nameOfWorker; } public void setHoursWorked(float hours) { hoursWorked = hours; } public void setRateOfPay(float rate) { rateOfPay = rate; } public float grossWage() { return hoursWorked * rateOfPay; } } class Executive extends Worker { protected float annualSalary; public Executive(String name) { super(name); } public void setAnnualSalary(float salary) { annualSalary = salary; } public float grossWage() { return annualSalary/12.0f; } } class PolyExample { static void displayGrossWage(Worker person) { System.out.println(person.getName() + " earns $" + person.grossWage()); } public static void main(String[] args) { Worker storeman = new Worker("Fred"); storeman.setHoursWorked(40.0f); storeman.setRateOfPay(10.0f); displayGrossWage(storeman); Executive director = new Executive("Clive"); director.setAnnualSalary(12000.0f); displayGrossWage(director); } }