Поскольку это вложенный класс, все в Node
может быть доступно MyList<T>
, независимо от модификатора доступа;поскольку это частный вложенный класс, ничего, впервые объявленное в Node
, не будет видно за пределами MyList<T>
.
Таким образом, единственный случай, когда модификатор доступа может иметь значение, это методы, которые переопределяют метод суперклассаtoString()
).Вы не можете уменьшить видимость переопределенного метода.toString()
всегда должен быть объявлен общедоступным для того, чтобы класс компилировался.
Следует также отметить, что, когда внешний класс обращается к внешнему классу, компилятор создает синтетический метод (я считаю, что область видимости пакета).Этот синтетический метод виден только в файле .class вложенного класса.