Интерфейсы (Java)
подскажите, пожалуйста. Как устроена реализация интерфейсов в java? К примеру, ActionListener. Мы создаем класс, имплиментим интерфейс и переопределяем абстрактный метод actionPerformed, где пишем код. Так вот, вопрос мой состоит в том, как устроена обработка события на уровне кода. Ведь, по логике, этой интерфейс должен содержать еще и неабстрактные методы, где, собственно, и будет заложена реализация, но их ведь нет.
public class MyActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println ("Action!");
}
}
Ответы (1 шт):
Ведь, по логике, этой интерфейс должен содержать еще и неабстрактные методы, где, собственно, и будет заложена реализация, но их ведь нет. - Интерфейс ничего не должен, должны все кто его реализуют.
Если говорить простым языком интерфейс может содержат в себе протокол (методы которые нужно реализовать), а также статичные, абстрактные и дефолтные методы с реализыцией. Интерфейс это специальный указатель на объект экземпляр класса реализующий его.
Возращяясь к ActionListener.
public interface ActionListener extends EventListener {
public void actionPerformed(ActionEvent e);
}
Класс реализующий данный интерфейс
public class MyActionListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println ("Action!");
}
}
имеет возможность передать указатель типа ActionListener другому объекту который вызовет actionPerformed метод. Сделано это для того, чтобы написать универсальный класс которому достаточно знать что есть actionPerformed.