Что означает класс реализует интерфейс?

177
24 января 2018, 15:26

Встретил это в книге по Java Яков Файн "Программирование на Java...". Вот цитата из книги:

Должно быть вам интересно, зачем беспокоиться о создании интерфейсов без текста программы? Причина в том, что интерфейс, сделанный однажды, может использоваться во многих других классах. Например, когда другие классы(или сама виртуальная машина JVM) видят, что класс MyDrawingPad реализует интерфейс MouseMotionListener, они знают, что в этом классе точно есть методы mouseDragged() и mouseMoved().

Пожалуйста, объясните то, что написано в цитате из книги.

Answer 1

Объявление интерфейса:

public interface IMyInterface {
    public void Barabum() ;
} 

Пример реализации интерфейса классом MyClass:

public class MyClass implements IMyInterface {
    // Реализация интерфейса
    @Override
    public void Barabum(){
        System.out.println("Hi!") ;
    } 
    // Любые другие методы
    public void OtherMethod1(){
        System.out.println("Method1!") ;
    } 
//.................................
    public void OtherMethodN(String s){
        System.out.println("MethodN") ;
    } 
} 

Здесь запись "implements IMyInterface" говорит о том, что в классе MyClass обязан присутствовать метод Barabum, притом не важно какой именно код этот метод содержит.

Answer 2

Интерфейс это чисто абстрактный класс с виртуальными методами, реализация которых описана в наследуемых от него классах. "Класс реализует интерфейс" означает что он наследует класс-интерфейс и содержит реализацию его виртуальных методов. Т. е. один и тот же метод объявленный в интерфейсе, будучи вызванным из разных классов которые от него унаследованы, будет выполнять разные действия, в зависимости от того как он реализован в конкретном классе-наследнике. А что в книге об этом ничего больше не написано?)

Answer 3

Интерфейс - это грубо говоря лишь название функций, без реализации.

Возьмём, напрмер, человека. Каждый человек умеет ходить, но он может это делать по разному.

Т.е. у человека есть интерфейс "ходить", но как именно будет ходить тот или иной человек зависит от реализации данного интерфейса классом.

Из цитаты мы видим, что класс MyDrawingPad описывает(реализует) интерфейс MouseMotionListener, тк. в интерфейсе есть два метода mouseDragged() и mouseMoved(), значит класс должен описать реализацию данных функций.

Не привожу вам примеры кода, в книге которую вы читаете листинги присутствуют.

READ ALSO
Внутренние отступы в окне Java FX

Внутренние отступы в окне Java FX

Создал окноДобавил элементов

164
Java Jsoup, как оставить &quot как &quot

Java Jsoup, как оставить &quot как &quot

Мне нужно скачать html-документ, используя Jsoup, но при этом так, чтобы символы, которые написаны кодом остались как код (например, ")

145
Моделирование согласования в Activiti [требует правки]

Моделирование согласования в Activiti [требует правки]

Есть задача: смоделировать бизнес-процесс согласования в ActivitiКратко схема такая

156
Данных в ThreadPool

Данных в ThreadPool

Здравствуйте друзья!

147