Используются ли все методы в интерфейсе по умолчанию? Режим общедоступной видимости?
Видимость методов в интерфейсе
Ответ 1
Все методы в интерфейсе по умолчанию равны public
.
См. Спецификация языка Java 6.6.1, которая гласит
Все члены интерфейсов неявно
public
.
Ответ 2
Все методы интерфейса ARE public abstract
, все поля интерфейса public static final
...
см. здесь.
Ответ 3
Просто чтобы добавить к другим ответам здесь: все методы общедоступны, однако, если сам интерфейс является локальным пакетом, то эффективно все методы также являются локальными пакетами.
Таким образом, вы можете смешивать общедоступные и пакетно-локальные методы, создавая пакетно-локальный интерфейс, расширяющий общедоступный.
public interface P{
void iAmPublic();
}
interface L extends P{
void iAmPackageLocal();
}
Здесь L
эффективно имеет один открытый и один пакетно-локальный метод. Клиенты извне пакета будут видеть только iAmPublic()
, тогда как изнутри пакета будут показаны оба метода.
Таким же образом вы можете встраивать интерфейсы в другие классы, чтобы достичь еще более заметной видимости метода.
Ответ 4
Да, все методы интерфейса являются общедоступными и не могут иметь никакого другого модификатора доступа (т.е. модификатор общедоступного доступа по умолчанию является единственным допустимым модификатором доступа)
Ответ 5
Да, все методы в интерфейсе неявно публичны и абстрактны.
Проверить Спецификация языка Java глава 9.4