Почему в Java интерфейс может иметь методы с реализацией (default)? Это не противоречит идее интерфейса?
Ответ: Нет, не противоречит. Они нужны, чтобы можно было добавлять новые методы в интерфейс, не ломая старые классы, которые уже его реализуют.
Без default при добавлении нового метода пришлось бы менять весь существующий код. С default-методом интерфейс даёт базовую реализацию метода, которую необязательно переопределять в реализующих классах.
Полезные ресурсы по Java



