Ключевое слово interface используется для создания полностью абстрактных классов. Основное предназначение интерфейса - определять каким образом мы можем использовать класс, который его реализует. Создатель интерфейса определяет имена методов, списки аргументов и типы возвращаемых значений, но не реализует их поведение. Все методы неявно объявляются как public.
Начиная с Java 8 в интерфейсах разрешается размещать реализацию методов по умолчанию default и статических static методов.
Интерфейс также может содержать и поля. В этом случае они автоматически являются публичными public, статическими static и неизменяемыми final.
В Java интерфейс - это абстрактный тип, который определяет список методов (без реализации) и/или констант (публичных статических неизменяемых полей), которые должны быть реализованы всеми классами, которые реализуют данный интерфейс.
Модификаторы по умолчанию, применяемые к полям и методам интерфейсов, являются следующими:
- поля в интерфейсе являются public static final (публичными, статическими и неизменяемыми)
- методы в интерфейсе являются public abstract (публичными и абстрактными)
Интерфейсы не имеют конструкторов и не могут быть инстанциированы, они могут быть только реализованы классом с помощью ключевого слова implements.
Пример создания интерфейса Drawable, который описывает метод draw() без реализации и константу COLOR:
public interface Drawable {
public static final String COLOR = "BLACK";
public abstract void draw();
}
Класс, который реализует этот интерфейс, должен реализовать метод draw() и может использовать константу COLOR:
public class Circle implements Drawable {
public void draw() {
System.out.println("Drawing a circle!");
}
}
Github: https://github.com/DEBAGanov