Ответ
Default-метод (метод по умолчанию) — это метод интерфейса, имеющий собственную реализацию. Ключевое слово default было введено в Java 8 для расширения интерфейсов без нарушения обратной совместимости с существующими классами.
Основная цель: Решение проблемы "ломких интерфейсов". Позволяет добавлять новую функциональность в интерфейсы, не заставляя все классы-реализации предоставлять свою реализацию этого метода.
Пример:
interface Vehicle {
// Абстрактный метод (должен быть реализован)
void start();
// Default-метод (реализация по умолчанию)
default void honk() {
System.out.println("Beep beep!");
}
}
class Car implements Vehicle {
@Override
public void start() {
System.out.println("Car started");
}
// Метод honk() не обязан быть переопределен, используется реализация по умолчанию.
}
Ключевые особенности:
- Объявляется с модификатором
default. - Имеет тело реализации.
- Класс, реализующий интерфейс, может, но не обязан переопределять default-метод.
- Если класс реализует несколько интерфейсов с одинаковыми default-методами, он обязан переопределить этот метод, чтобы разрешить конфликт.
- Default-методы имеют доступ к другим методам интерфейса (в том числе private).
Практическое применение:
- Добавление новых методов в коллекции Java (например,
stream(),forEach()в интерфейсеIterable). - Создание удобных методов-хелперов непосредственно в интерфейсе.