Я немного смущен термином «частный пакет», который используется в некоторых документах, наряду с использованием «доступа по умолчанию». Разве частный доступ к пакету и доступ по умолчанию не являются синонимами защищенного?
94
Я немного смущен термином «частный пакет», который используется в некоторых документах, наряду с использованием «доступа по умолчанию». Разве частный доступ к пакету и доступ по умолчанию не являются синонимами защищенного?
default
модификатор перед (интерфейсными) методами. Но это не модификатор доступа! Все модификаторы доступа и их области четко визуализированы в этой таблице .Ответы:
Да почти то же самое. Модификатор protected указывает, что к члену можно получить доступ только в его собственном пакете (как в случае с package-private) и, кроме того , подклассом его класса в другом пакете.
источник
public static final
, для методаpublic abstract
, для перечисления или аннотации,public
и для класса,public static
Модификатор доступа «по умолчанию» (тот, где ни один из них явно не указан) - «частный для пакета», что означает, что только вещи в одном пакете могут получить к ним доступ. Однако нахождение в одном пакете ничего не говорит о наследовании между классами - это чисто соглашение об именах.
«Защищено» означает, что не только классы в одном пакете, но и подклассы (независимо от того, в каком пакете находятся эти подклассы) смогут получить к нему доступ.
источник
Доступ по умолчанию для классов - частный для пакета, однако доступ по умолчанию для членов интерфейса - открытый.
например
Правила доступа по умолчанию для интерфейсов не такие же, как для классов.
источник
Частный доступ к пакету и доступ по умолчанию - синонимы. Объект также может получить доступ к защищенному члену объектов, классы которых находятся в одном пакете. Объект также может получить доступ к защищенному члену своих суперклассов без указания их пакета. В качестве конкретного примера:
источник
«Приватный пакет» и доступ по умолчанию одинаковы. В ранних выпусках компилятора около 1.1.2 / 3 «пакет» был разрешенным модификатором, но игнорировался, что означало то же самое, что и отсутствие модификатора, то есть «частный пакет». Вскоре после этого появилась недолговечная мода ставить
/*package*/
такие ситуации (в качестве комментария). Точно так же в то время вы могли объявлять такие вещи, как синхронизированные классы, хотя опять же не было никакого фактического семантического эффекта.Ни один из них не совпадает с «защищенным», которое распространяется на производные классы в других пакетах.
источник
Из спецификации языка Java
источник
по умолчанию и частный пакет одинаковы, что означает, что оба могут использоваться любым классом, пока они не будут в одном пакете.
Пакет-частный термин, на самом деле, называется по смыслу частного модификатора в качестве частного средств он доступен только в одном классе , и никаких других классов или подклассов не может получить к нему доступ в одном пакете или без.
Следовательно , частный пакет означает то же, что и по умолчанию .
источник