Ответ
Нет, не обязательно. Все методы интерфейса, не помеченные как default или static, являются public abstract по умолчанию, даже если эти модификаторы опущены.
Правила видимости методов в интерфейсе:
- Обычные методы: Неявно
public abstract. Явное указание избыточно, но допустимо. - Методы по умолчанию (default): Начиная с Java 8, могут иметь реализацию. Объявляются с ключевым словом
defaultи являютсяpublic. - Статические методы (static): Начиная с Java 8, могут иметь реализацию. Объявляются с
staticи являютсяpublic. - Приватные методы (private): Начиная с Java 9, могут быть
private(обычно для выделения общей логикиdefault-методов).
Пример, демонстрирующий эквивалентность:
interface MyInterface {
// Неявно public abstract (классический абстрактный метод)
void implicitAbstractMethod();
// Явно public abstract (полностью эквивалентно строке выше)
public abstract void explicitAbstractMethod();
// default метод (Java 8+) - имеет реализацию, public по умолчанию
default void defaultMethod() {
System.out.println("Реализация по умолчанию");
}
// static метод (Java 8+) - public по умолчанию
static void staticUtility() {
System.out.println("Статическая утилита");
}
}
Стилистическая рекомендация: В современном коде модификаторы public и abstract для обычных методов интерфейса принято опускать для краткости и читаемости.