У меня вопрос, где у меня есть суперкласс (Employee), который реализует интерфейс, содержащий только 1 метод, следующим образом.Вызов метода в подклассе
public interface Payable
{
double getPaymentAmount(); // calculate payment; no implementation
}
У меня есть несколько подклассов, которые наследуют от работника (например SalariedEmployee, HourlyEmployee, CommissionEmployee), каждый из которых содержит метод прибыли.
Мне было предложено «изменить класс Employee для реализации интерфейса. Платить и объявить метод getPaymentAmount для вызова доходов метода. Метод getPaymentAmount затем будет наследоваться подклассами иерархии Employee. Когда getPaymentAmount вызывается для определенного подкласса объект, он полиморфно вызывает соответствующий метод заработка для этого подкласса ».
Может ли кто-нибудь помочь мне в этом, как это сделать? Как вызвать соответствующий метод для заработка в методе класса Employee getPaymentAmount без редактирования подклассов?
Я относительный новичок в Java, так что все оцененная помощь
Соответствующая часть класса Employee выглядит следующим образом:
public abstract class Employee implements Payable
{
private String firstName;
private String lastName;
private String socialSecurityNumber;
// three-argument constructor
public Employee(String first, String last, String ssn)
{
firstName = first;
lastName = last;
socialSecurityNumber = ssn;
} // end three-argument Employee constructor
//getters, settters, toString override etc have been deleted.
public double getPaymentAmount()
{
???? //This is what I need help with.
}
} // end abstract class Employee
и принимая 1 пример подкласса:
public class SalariedEmployee extends Employee
{
private double weeklySalary;
// four-argument constructor
public SalariedEmployee(String first, String last, String ssn, double salary)
{
super(first, last, ssn); // pass to Employee constructor
setWeeklySalary(salary); // validate and store salary
} // end four-argument SalariedEmployee constructor
@Override
public double earnings()
{
return getWeeklySalary();
} // end method earnings
} // end class SalariedEmployee
Помогите вам с чем, _специфично? –