Junior — Middle
76
В чем заключается применение дефолтных методов в интерфейсах и абстрактных классах, и как они различаются?
Ответ от нейросети
sobes.tech AI
Дефолтные методы (default methods) в интерфейсах Java — это методы с реализацией, которые позволяют добавлять новые методы в интерфейсы без нарушения существующих реализаций. Они появились в Java 8.
Применение дефолтных методов в интерфейсах:
- Позволяют расширять интерфейсы, не ломая код классов, которые их реализуют.
- Обеспечивают базовую реализацию, которую можно переопределить.
Абстрактные классы могут содержать как абстрактные методы (без реализации), так и методы с реализацией. Они служат для создания базового класса с общей логикой.
Основные различия:
- Интерфейс с дефолтными методами не может иметь состояния (полей), кроме констант.
- Абстрактный класс может содержать поля и конструкторы.
- Класс может реализовывать несколько интерфейсов, но наследовать только один абстрактный класс.
Пример дефолтного метода в интерфейсе:
public interface Logger {
void log(String message);
default void logError(String error) {
log("ERROR: " + error);
}
}
Здесь logError — дефолтный метод с реализацией, который можно использовать или переопределить в классах, реализующих интерфейс.