Интерфейсы (Java)

подскажите, пожалуйста. Как устроена реализация интерфейсов в java? К примеру, ActionListener. Мы создаем класс, имплиментим интерфейс и переопределяем абстрактный метод actionPerformed, где пишем код. Так вот, вопрос мой состоит в том, как устроена обработка события на уровне кода. Ведь, по логике, этой интерфейс должен содержать еще и неабстрактные методы, где, собственно, и будет заложена реализация, но их ведь нет.

public class MyActionListener implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
        System.out.println ("Action!");
    }
    
}

Ответы (1 шт):

Автор решения: Aziz Umarov

Ведь, по логике, этой интерфейс должен содержать еще и неабстрактные методы, где, собственно, и будет заложена реализация, но их ведь нет. - Интерфейс ничего не должен, должны все кто его реализуют.

Если говорить простым языком интерфейс может содержат в себе протокол (методы которые нужно реализовать), а также статичные, абстрактные и дефолтные методы с реализыцией. Интерфейс это специальный указатель на объект экземпляр класса реализующий его.

Возращяясь к 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.

→ Ссылка