Я читаю SCJP от Kathy Sierra и Bert Bates, и он говорит на стр. 21, что «Публичный модификатор требуется, если вы хотите, чтобы интерфейс имел открытый, а не доступ по умолчанию». Это правда? Если да, то методы интерфейса (которые всегда являются общедоступными) доступны только в том случае, если интерфейс находится в одном пакете класса реализации ...? Так как это смысл модификатора доступа по умолчанию ... Я немного смущен этим.Верно ли, что если вы не укажете модификатор доступа для интерфейса, этот интерфейс будет иметь доступ по умолчанию.
3
A
ответ
2
Верно ли, что если вы не указали модификатор доступа для интерфейса , этот интерфейс будет иметь доступ по умолчанию?
Да, это правда. Типы/поля/методы Java (в классе) имеют доступ к пакетному уровню, если модификатор доступа не указан. Члены, определенные в типе inteface, являются общедоступными по умолчанию.
Прочитать учебник - Controlling Access to Members of a Class.
1
Здесь 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
, потому что ex plicit всегда лучше, чем неявный
Если вы хотите, чтобы * интерфейс * имел открытый доступ, то вам нужно это сказать. Однако отдельные * члены * интерфейса всегда являются общедоступными. – cHao
Так, например, если сам интерфейс имеет доступ по умолчанию, то как его методы используются вне пакета, в котором он реализован. Интерфейс в этом случае даже не будет видимым для класса реализации ... так что не имеет для меня смысла, почему его методы будут общедоступными, если у него есть доступ по умолчанию :-( – user1142130
Интерфейс будет виден любому другому классу в пакете. Любой класс в пакете, который хотел реализовать интерфейс, соответствующие методы как общедоступные. Аутсайдеры не смогут использовать интерфейс - доступ по умолчанию эффективно «для внутреннего использования» - но они могут вызывать методы, которые он определяет, поскольку они будут публичными в классе. Предполагая, конечно, что класс является публичным. – cHao