Подтвердить что ты не робот

Видимость методов в интерфейсе

Используются ли все методы в интерфейсе по умолчанию? Режим общедоступной видимости?

4b9b3361

Ответ 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

Да, все методы интерфейса являются общедоступными и не могут иметь никакого другого модификатора доступа (т.е. модификатор общедоступного доступа по умолчанию является единственным допустимым модификатором доступа)