В чем заключается применение дефолтных методов в интерфейсах и абстрактных классах, и как они различаются?

Дефолтные методы (default methods) в интерфейсах Java — это методы с реализацией, которые позволяют добавлять новые методы в интерфейсы без нарушения существующих реализаций. Они появились в Java 8.

Короткий ответ

Что ответить на собеседовании

Дефолтные методы (default methods) в интерфейсах Java — это методы с реализацией, которые позволяют добавлять новые методы в интерфейсы без нарушения существующих реализаций. Они появились в Java 8.

Подробный разбор

Ответ с пояснениями

Дефолтные методы (default methods) в интерфейсах Java — это методы с реализацией, которые позволяют добавлять новые методы в интерфейсы без нарушения существующих реализаций. Они появились в Java 8.

Применение дефолтных методов в интерфейсах:

  • Позволяют расширять интерфейсы, не ломая код классов, которые их реализуют.
  • Обеспечивают базовую реализацию, которую можно переопределить.

Абстрактные классы могут содержать как абстрактные методы (без реализации), так и методы с реализацией. Они служат для создания базового класса с общей логикой.

Основные различия:

  • Интерфейс с дефолтными методами не может иметь состояния (полей), кроме констант.
  • Абстрактный класс может содержать поля и конструкторы.
  • Класс может реализовывать несколько интерфейсов, но наследовать только один абстрактный класс.

Пример дефолтного метода в интерфейсе:

public interface Logger {
    void log(String message);

    default void logError(String error) {
        log("ERROR: " + error);
    }
}

Здесь logError — дефолтный метод с реализацией, который можно использовать или переопределить в классах, реализующих интерфейс.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее