Что такое модификатор доступа по умолчанию?

Я только начал читать книгу по Java и удивился; какой модификатор доступа является значением по умолчанию, если он не указан?

103
задан Zoe 10 March 2019 в 10:16
поделиться

5 ответов

Видимость по умолчанию известна как «частный пакет» (хотя вы не можете использовать это явно), что означает, что поле будет доступно изнутри того же пакета, к которому принадлежит класс.

Как указала mdma, это неверно для членов интерфейса, для которых по умолчанию установлено значение «public».

См. Спецификаторы доступа Java

113
ответ дан 24 November 2019 в 04:17
поделиться

Спецификатор по умолчанию зависит от контекста.

Для классов и объявлений интерфейсов по умолчанию используется частный пакет. Это находится между защищенным и частным, разрешая доступ только классам в одном пакете. (Защищенный такой же, но также разрешающий доступ к подклассам вне пакета.)

class MyClass   // package private
{
   int field;    // package private field

   void calc() {  // package private method

   }
}

Для членов интерфейса (полей и методов) доступ по умолчанию является публичным. Но обратите внимание, что само объявление интерфейса по умолчанию имеет значение package private.

interface MyInterface  // package private
{
   int field1;         // static final public

   void method1();     // public abstract
}

Если у нас есть объявление

public interface MyInterface2 extends MyInterface
{

}

Классы, использующие MyInterface2, могут видеть field1 и method1 из суперинтерфейса, поскольку они являются общедоступными, даже если они не могут видеть объявление самого MyInterface.

79
ответ дан 24 November 2019 в 04:17
поделиться

Если спецификатор доступа не указан, это доступ на уровне пакета (для этого нет явного спецификатора) для классов и членов классов. Методы интерфейса неявно открыты.

15
ответ дан 24 November 2019 в 04:17
поделиться

Видимость по умолчанию (без ключевого слова) - пакет , что означает, что он будет доступен каждому классу, находящемуся в том же пакете.

Интересное примечание: protected не ограничивает видимость подклассами, но также и другими классами в том же пакете

9
ответ дан 24 November 2019 в 04:17
поделиться

Подробнее см. здесь . По умолчанию используется не приватный / публичный / защищенный, а совершенно другая спецификация доступа. Он не используется широко, и я предпочитаю быть более конкретным в своих определениях доступа.

3
ответ дан 24 November 2019 в 04:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: