Каждый экземпляр нестатического внутреннего класса имеет включающий экземпляр - экземпляр внешнего класса, к которому он привязан через ссылочную переменную, хранящуюся во внутреннем объекте класса.Все члены включающего экземпляра доступны для внутреннего объекта класса через эту ссылку.
Компилятор, конечно же, заботится о добавлении этой ссылочной переменной, а также некоторых специальных функций доступа, которые внутренний объект класса может использовать для доступа к закрытым членам внешнего объекта класса.Вы можете увидеть эти функции доступа, разобрав внешний класс с помощью javap -c
.