Junior — Middle
106
Qual é a aplicação dos métodos padrão em interfaces e classes abstratas, e como eles diferem?
Resposta da IA
sobes.tech IA
Дефолтные методы (default methods) в интерфейсах Java — это методы с реализацией, которые позволяют добавлять новые методы в интерфейсы без нарушения существующих реализаций. Они появились в Java 8.
Применение дефолтных методов в интерфейсах:
- Позволяют расширять интерфейсы, не ломая код классов, которые их реализуют.
- Обеспечивают базовую реализацию, которую можно переопределить.
Абстрактные классы могут содержать как абстрактные методы (без реализации), так и методы с реализацией. Они служат для создания базового класса с общей логикой.
Основные различия:
- Интерфейс с дефолтными методами не может иметь состояния (полей), кроме констант.
- Абстрактный класс может содержать поля и конструкторы.
- Класс может реализовывать несколько интерфейсов, но наследовать только один абстрактный класс.
Пример дефолтного метода в интерфейсе:
public interface Logger {
void log(String message);
default void logError(String error) {
log("ERROR: " + error);
}
}
Здесь logError — дефолтный метод с реализацией, который можно использовать или переопределить в классах, реализующих интерфейс.