На этой же странице сказано, что в подразделе 6.6.8 вы также можете найти следующее утверждение:
Закрытый член или конструктор класса доступен только в теле класса верхнего уровня, который содержит объявление члена или конструктора. Он не наследуется подклассами.
Закрытый член класса, доступ которого мы оцениваем здесь: i .
public void messWithI () - это метод, который существует в теле класса верхнего уровня, где было объявлено i , а именно, PrivateMember .
Ваша конструкция соответствует приведенному выше утверждению, поэтому она работает без проблем.
Это еще один способ сказать то же самое, что и Джон и Девсолар.
Модификаторы доступа для членов класса связаны с тем, где написан код (в каком пакете и в каком классе), независимо от того, к какому члену предоставляется доступ: член класса или член экземпляра.
Логически, вы не можете использовать экземпляр экземпляра класса, если у вас нет экземпляра класса, но это другая проблема, связанная с жизненным циклом члена.