по умолчанию

ного смущен термином «частный пакет», который используется в некоторых документах, наряду с использованием «доступа по умолчанию». Разве пакет закрытый и доступ по умолчанию не являются синонимами защищенного?

 childno͡.de01 февр. 2016 г., 22:28
Вы также можете проверить учебную таблицу изdocs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
 TurtleToes24 мар. 2011 г., 08:58
Таким образом, нет никакого ключевого слова вообще, чтобы выразить частный доступ пакета? Это только подразумевается, не указав модификатор доступа?
 aioobe13 нояб. 2015 г., 14:16
TurtleToes, это правильно, и это может быть немного запутанным в Java 8, так как на самом деле можно поставитьdefault модификатор перед методами (интерфейса). Но это не модификатор доступа! Все модификаторы доступа и их области видимости четко отображаются вэтот стол.

Ответы на вопрос(7)

Решение Вопроса

это почти то же самое. Защищенный модификатор указывает, что к члену можно получить доступ только в его собственном пакете (как с package-private), и,к тому же, подклассом своего класса в другом пакете.

 ArtOfWarfare31 окт. 2012 г., 19:59
@PeterLawrey Ой? Что такое доступ по умолчанию для членов интерфейса?
 TurtleToes24 мар. 2011 г., 08:52
Здесь было много хороших ответов, но этот объяснил все просто и точно, так что я принимаю это
 Peter Lawrey24 мар. 2011 г., 10:01
Стоит отметить, что доступ по умолчанию для члена интерфейсане Пакет-частное.
 TurtleToes24 мар. 2011 г., 08:46
Это был ответ, который я искал, спасибо
 Peter Lawrey31 окт. 2012 г., 21:43
По умолчанию для поляpublic static final, для методаpublic abstract, для перечисления или аннотацииpublic и для класса этоpublic static

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

Пакет-частное Термин, на самом деле, называется значениемчастный модификатор какчастный означает, что он доступен только в том же классе, и никакие другие классы или подклассы не могут получить к нему доступ в том же пакете или без него.

следовательноПакет-частное означает так же, какпо умолчанию.

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

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

 Adrian Petrescu24 мар. 2011 г., 08:49
Ты прав, мой плохой. Исправлено сейчас :)
 Gursel Koca24 мар. 2011 г., 08:45
хорошо, ваша формулировка о защищенном неверна .. Те же экземпляры класса пакета также могут получить доступ к защищенным элементам ..

Спецификация языка Java

6.6.5 Пример. Поля доступа по умолчанию, методы и конструкторы Если не указан ни один из модификаторов доступа public, protected или private, член класса или конструктор доступен во всем пакете, который содержит объявление класса, в котором объявлен член класса, но член класса или конструктор недоступен в любой другой пакет.

Если открытый класс имеет метод или конструктор с доступом по умолчанию, то этот метод или конструктор недоступен или наследуется подклассом, объявленным вне этого пакета

 Tom Hawtin - tackline24 мар. 2011 г., 10:18
Но как насчет "пакета частного". Это не в JLS.

также получить доступ к защищенному члену объектов, чьи классы находятся в одном пакете. Объект может также получить доступ к защищенному члену своих суперклассов без условия об их пакете. В качестве конкретного примера:

package ab;

class A {
   protected void foo() {}
   void dd(){}
}

class C {
   void aa(){
       A a = new A();
       a.foo(); //legal
       a.dd();  //legal
   }
}


package sub;

class D extends A{
      void ac(){
         foo(); //legal ..
         dd();  //illegal.. because dd has default access.. 
      }

class E {
    void ee(){
       A a = new A();
       a.foo(); //illegal
       a.dd();  //illegal     
    }
 Gursel Koca24 мар. 2011 г., 08:39
Downvoter может объяснить, что не так с этим объяснением? .. кроме плохой формулировки ..
 Adrian Petrescu24 мар. 2011 г., 08:42
Я не отрицатель, но я думаю, это потому, что это не совсем правильно; объект может получить доступзащищенный члены суперклассов, независимо от пакета.

«Закрытый пакет» и доступ по умолчанию одинаковы..1.2 / 3 «пакет» был разрешенным модификатором, но игнорировался, что означало то же самое, что и без модификатора, то есть «частный пакет». Вскоре после этого появилась недолгая мода для/*package*/ (как комментарий) в таких ситуациях. Аналогичным образом в то время вы могли объявлять такие вещи, как синхронизированные классы, хотя опять-таки не было фактического семантического эффекта.

Ни один из них не похож на «защищенный», который распространяется на производные классы в других пакетах.

классы является закрытым пакетом, однако доступ по умолчанию дляинтерфейс участники являются публичными.

например

public interface I {
   int A = 1;
// same as
   public static final int A = 1;

   void method();
// same as
   public abstract void method();

   class C { }
// same as
   public static class C { }
}

Правила доступа по умолчанию для интерфейсов не такие, как для классов.

Ваш ответ на вопрос