У меня есть интерфейс (называемый Subject
), который имеет следующий метод:
public void addObserver(Observer o);
Затем у меня есть другой интерфейс, который расширяет Subject
, называемый TimerSubject
. Этот интерфейс является более конкретной версией Subject
, используемой для синхронизации. У него есть несколько других разных методов.
Есть также два соответствующих интерфейса, Observer
и TimerObserver
. TimerObserver
расширяет Observer
.
Когда класс реализует TimerSubject
, он должен переопределить метод addObserver()
из интерфейса Subject
. Это выглядит так:
@Override
public void addObserver(**Observer e**) {
observers.add(e);
}
Проблема в том, что мне нужен метод для принятия TimerObserver
вместо Observer
, который будет выглядеть так:
@Override
public void addObserver(**TimerObserver e**) {
observers.add(e);
}
Это не работает, поскольку аргументы не совпадают с аргументами переопределяемого метода.
Итак, есть ли способ переопределить метод с полиморфными аргументами?