Правда ли, что если вы не укажете модификатор доступа для интерфейса, этот интерфейс будет иметь доступ по умолчанию - PullRequest
3 голосов
/ 11 января 2012

Я читаю SCJP Кэти Сьерра и Берт Бейтс, и это говорит на стр.21 что «Модификатор public требуется, если вы хотите, чтобы интерфейс имел общедоступный, а не доступ по умолчанию».Это правда?Если да, то методы интерфейса (которые всегда общедоступны) доступны только в том случае, если интерфейс находится в том же пакете класса реализации ...?Так как это значение модификатора доступа по умолчанию ... Я немного запутался в этом.

Ответы [ 2 ]

2 голосов
/ 11 января 2012

Правда ли, что если вы не укажете модификатор доступа для Интерфейс, этот интерфейс будет иметь доступ по умолчанию?

Да, это правда. Типы / поля / методы Java (в классе) имеют доступ на уровне пакета, если не указан модификатор доступа. Члены, определенные в типе inteface, являются открытыми по умолчанию.

Руководство по чтению - Управление доступом к членам класса .

1 голос
/ 11 января 2012

Здесь interface сам по себе package protected, но методы всегда public по умолчанию

interface Foo
{
    void bar(); // this is always public and nothing else
}

Здесь interface равно public, а также методы

public interface Foo
{
    void bar(); // this is always public and nothing else
}

вы можете объявить public void bar(); или void bar(); они означают одно и то же, лично я всегда ставлю public, потому что явное всегда лучше, чем неявное

...