Поля и методы интерфейсов в Java по умолчанию имеют модификаторы public и abstract, соответственно. Если в интерфейсе определяется метод, но не указывается модификатор доступа, то он автоматически считается public и abstract. Интерфейс может содержать поля, но они автоматически являются статическими (static) и неизменными (final). Все методы и переменные неявно объявляются как public. Начиная с Java 8, интерфейсы могут также иметь методы по умолчанию (default methods), которые имеют реализации по умолчанию и могут быть переопределены в классах, реализующих интерфейс. Нововведением Java 9 стало добавление приватных методов и приватных статических методов в интерфейсы, которые могут использоваться для того, чтобы скрыть детали реализации и облегчить повторное использование кода. Например, интерфейс с одним методом может выглядеть так: public interface MyInterface {
void myMethod();
default void myDefaultMethod() {
System.out.println("Default implementation of myDefault