Default-методы и static-методы были добавлены в интерфейсы в Java 8. Основные отличия:
- Доступ к состоянию объекта: Default-методы имеют доступ к полям экземпляра класса, реализующего интерфейс. Static-методы такого доступа не имеют и оперируют только со статическим состоянием интерфейса или параметрами вызова.
- Переопределение: Default-методы могут быть переопределены в классах-реализациях. Static-методы интерфейса не могут быть переопределены в классах-реализациях.
- Вызов: Default-методы вызываются на экземпляре класса, реализующего интерфейс. Static-методы вызываются напрямую на имени интерфейса.
Пример:
java