Ответ
Да, начиная с Java 8 интерфейсы могут содержать неабстрактные методы с реализацией:
- default методы - имеют реализацию и могут быть переопределены в классах:
interface MyInterface {
default void show() {
System.out.println("Default method");
}
}
- static методы - принадлежат интерфейсу, а не экземплярам:
interface MyInterface {
static void print() {
System.out.println("Static method");
}
}
- private методы (с Java 9) - вспомогательные методы внутри интерфейса.
Это позволяет расширять интерфейсы, не ломая существующую реализацию.