Gymterview
junior

Дайте определение понятию интерфейс. Какие модификаторы по умолчанию имеют поля и методы интерфейсов?

Интерфейс (interface) — ссылочный тип в Java, определяющий контракт (набор методов), который должны реализовать классы. Основное предназначение интерфейса — определять, каким образом можно использовать класс, который его реализует.

Методы интерфейса

Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений. Все абстрактные методы интерфейса неявно объявляются как public abstract.

Начиная с Java 8 в интерфейсах разрешается размещать:

  • default-методы — методы с реализацией по умолчанию;
  • static-методы — статические методы с реализацией.

Начиная с Java 9 в интерфейсах также допускаются:

  • private-методы — приватные методы для переиспользования логики внутри default и static методов, без раскрытия их в публичном API.

Поля интерфейса

Интерфейс может содержать поля. В этом случае они автоматически являются public static final.

Sealed-интерфейсы (Java 17+)

Начиная с Java 17, интерфейсы могут быть объявлены как sealed (запечатанные), что позволяет ограничить список классов и интерфейсов, которые могут их реализовывать или расширять, с помощью ключевого слова permits:

Пример
public sealed interface Shape permits Circle, Rectangle, Triangle {}