Дайте определение понятию интерфейс. Какие модификаторы по умолчанию имеют поля и методы интерфейсов?
Интерфейс (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 {}