class Employee { private String name; private double baseSalary; public Employee(String name, double baseSalary) { this.name = name; this.baseSalary = baseSalary; } public String getName() { return name; } // Base implementation of computeSalary method public double computeSalary() { return baseSalary; } } class Manager extends Employee { private double bonus; public Manager(String name, double baseSalary, double bonus) { super(name, baseSalary); this.bonus = bonus; } // Override computeSalary method to include bonus @Override public double computeSalary() { // Calling the base class method using super double baseSalary = super.computeSalary(); return baseSalary + bonus; } } public class PolymorphicInvocationExample { public static void main(String[] args) { // Polymorphic invocation using base class reference Employee emp1 = new Employee("John Doe", 50000.0); System.out.println("Employee Salary: $" + emp1.computeSalary()); // Polymorphic invocation using subclass reference Employee emp2 = new Manager("Jane Smith", 60000.0, 10000.0); System.out.println("Manager Salary: $" + emp2.computeSalary()); } }