В Java интерфейс - это абстрактный тип данных, в котором не указаны реализации методов. Он определяет общее поведение для группы классов, не описывая при этом, как именно это поведение должно быть реализовано. Интерфейсы могут содержать методы и константы, но не могут содержать обычные переменные экземпляра или конструкторы.
Модификаторы по умолчанию для полей и методов в интерфейсах - это public и abstract, соответственно. Это означает, что все поля и методы в интерфейсе являются открытыми и абстрактными (т.е. не имеют реализации).
Кроме того, начиная с версии Java 8, интерфейсы могут содержать методы с реализацией по умолчанию (default methods) и статические методы (static methods). Методы с реализацией по умолчанию позволяют добавлять новую функциональность в существующий интерфейс без необходимости изменения реализации классов, которые уже реализуют данный интерфейс. Статические методы могут использоваться для предоставления вспомогательной функциональности или констант внутри интерфейса.
Github: https://github.com/DEBAGanov