Mediumdefault-methodjava8
Что такое default-методы в интерфейсах (Java 8)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
Default-методы (Java 8) — методы в интерфейсах с реализацией через default. Цель: добавить методы в существующие интерфейсы без нарушения совместимости (Map.forEach, Iterable.forEach, Collection.stream).
interface Greeter {
default void hello() {
System.out.println("hi");
}
static Greeter create() { return () -> {}; } // static-метод
}Diamond-конфликт: если два интерфейса имеют одинаковый default-метод, класс обязан его переопределить:
@Override
public void hello() { A.super.hello(); } // явный выборstatic-методы в интерфейсах — для helper-методов;private-методы (с Java 9) — для дедупликации default;- Не заменяют абстрактные классы: нет состояния и конструктора.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.