Ответ
Интерфейс объявляет контракт, который реализующие его классы должны выполнить. Методы интерфейса по умолчанию являются public abstract и могут иметь параметры и возвращаемый тип.
Пример базового интерфейса:
// Функциональный интерфейс с одним абстрактным методом
@FunctionalInterface
interface StringProcessor {
// Абстрактный метод, принимающий и возвращающий значение
String process(String input);
}
Начиная с Java 8, интерфейсы также могут содержать:
- Default методы (реализация по умолчанию):
default String toUpperCase(String input) { return input.toUpperCase(); } - Static методы (принадлежат интерфейсу):
static boolean isEmpty(String str) { return str == null || str.trim().isEmpty(); }
Использование (лямбда-выражение):
StringProcessor reverser = (str) -> new StringBuilder(str).reverse().toString();
String result = reverser.process("Hello"); // Вернет "olleH"
Ключевые моменты:
- Класс, реализующий интерфейс, обязан предоставить реализацию всех его абстрактных методов.
- Аннотация
@FunctionalInterfaceгарантирует, что интерфейс имеет ровно один абстрактный метод, что позволяет использовать его с лямбда-выражениями.