#java #интерфейс
Я во всех учебниках видел, читал, тестировал interface с методами без реализации. Но вот копаюсь в дереве и тут есть методы с реализацией default. Это как понять? То есть можно реализовать интерфейс с реализацией??? Спасибо.
Ответы
Ответ 1
Можно определить интерфейс с реализацией. Эта возможность появилась в Java 8, в более ранних версиях она была недоступна. Вот пример реализации такого интерфейса: interface Test { default int test(int i) { return i; } } Если в классе, реализующем этот интерфейс, метод не переопределяется, то будет использована дефолтная реализация из интерфейса. Фактически, начиная с Java 8, интерфейс приобрёл некоторые черты обычного класса и стало возможным реализовать некий аналог множественного наследования.Ответ 2
Добавлю свои 5 копеек. Дефолтные методы в интерфейсе избавляют от такого гемороя как перелопачивание всего кода. Например, когда написаны тысячи строк кода, и вдруг, появляется острая необходимость дополнить интерфейс еще одним методом, то компилятор будет люто ругаться и просить реализовать новый метод во всех классах, которые заимплементились от этого интерфейса. Но стоит пометить новый метод как defaultи проблем с обязательной реализацией этого метода в классах не будет.
Комментариев нет:
Отправить комментарий