junior
Что такое default методы интерфейса?
default-метод интерфейса — это метод с реализацией, объявленный в интерфейсе с ключевым словом default. Класс, реализующий интерфейс, наследует эту реализацию и может, но не обязан, её переопределить. Главная причина появления — возможность добавлять новые методы в существующие интерфейсы без нарушения обратной совместимости.
Аналогия из жизни:
default-метод — это инструкция по умолчанию в контракте. Если вы не написали свою, действует стандартная. Но вы вольны её заменить.
Пример
interface Example {
int process(int a);
default void show() {
System.out.println("default show()");
}
}
Ключевые правила
- Класс может не переопределять
default-метод — тогда наследуется реализация из интерфейса - Если класс реализует два интерфейса с одинаковым
default-методом, он обязан переопределить метод самостоятельно (иначе — ошибка компиляции) default-метод не может переопределить методObject(equals,hashCode,toString)default-методы позволили добавитьstream(),forEach(),sort()и другие методы в существующие интерфейсы коллекций без нарушения обратной совместимости
На собеседовании: часто спрашивают, что произойдёт при конфликте
default-методов из двух интерфейсов. Ответ: ошибка компиляции, класс обязан явно переопределить метод. Также упомяните, что именноdefault-методы сделали возможным появление Stream API.