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 подскажет развёрнутый ответ в реальном времени.