Сомнения в модификаторах доступа к классу высшего уровня в Java

У меня есть некоторые сомнения по поводу модификаторов доступа, используемых для классов верхнего уровня в Java.

1) Может ли модификатор доступа public или default использоваться только с классами верхнего уровня или даже с вложенными классами?

2) Допустим, есть два разных класса A и B, оба в разных пакетах. Затем, чтобы иметь доступ (доступ к членам класса) к классу A по классу B, тогда оба класса верхнего уровня, то есть "A", а также члены класса должны быть определены как public, верно? Если класс или члены класса не являются общедоступными, то класс B не будет иметь доступа к классу A, верно?

Пожалуйста, поправьте, если я ошибаюсь.

1 ответ

1) Вложенные классы могут иметь те же модификаторы доступа, что и классы верхнего уровня.

2) Для доступа к классу A из класса B только A должен быть общедоступным. Класс B может быть закрытым (по умолчанию). B может получить доступ к методам A, только если методы A общедоступны (если B не наследует от A). Если класс A является пакетом private, то не имеет значения, содержит ли A какие-либо открытые методы - они не будут доступны B.

См. Также документы Oracle и этот поток stackru.

Другие вопросы по тегам