Доступ к модификаторам внутри частного статического вложенного класса в Java - PullRequest
8 голосов
/ 02 ноября 2010

У меня есть «закрытый статический» вложенный класс в Java.Какое значение имеют модификаторы доступа для полей и методов внутри этого класса?Я пробовал как общедоступный, так и частный, но не оказал влияния на мое приложение.

Ответы [ 2 ]

11 голосов
/ 02 ноября 2010

Поскольку это вложенный класс, все в Node может быть доступно MyList<T>, независимо от модификатора доступа;поскольку это частный вложенный класс, ничего, впервые объявленное в Node, не будет видно за пределами MyList<T>.

Таким образом, единственный случай, когда модификатор доступа может иметь значение, это методы, которые переопределяют метод суперклассаtoString()).Вы не можете уменьшить видимость переопределенного метода.toString() всегда должен быть объявлен общедоступным для того, чтобы класс компилировался.

Следует также отметить, что, когда внешний класс обращается к внешнему классу, компилятор создает синтетический метод (я считаю, что область видимости пакета).Этот синтетический метод виден только в файле .class вложенного класса.

5 голосов
/ 02 ноября 2010

Два вида вложенных классов: 1. Статический (вложенный класс) и 2. Нестатический (также называемый внутренним классом)

Теперь класс Outer, MyList, может получить доступ ко всем членам внутреннего класса Node, но вы фактически используете спецификаторы доступа для членов класса Node (вложенный класс), когда вы хотите ограничения какой-то внешний класс обращается к нему.

Интересные чтения: Источник1 , Источник2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...