Как модификаторы доступа внутренне работают в JVM ?
В спецификации виртуальной машины Java это подробно описано.В частности, раздел 2.7.4 Квалифицированные имена и контроль доступа состояния:
Поле, метод или конструктор класса могут быть объявлены с использованием не более одного из public, private или protected ключевых слов.Член public может быть доступен любому классу или интерфейсу.Доступ к члену private возможен только из класса, который содержит его объявление.Считается, что элемент, который не объявлен public, protected или private, имеет доступ по умолчанию и может быть доступен из любого места в пакете, в котором он объявлен, и только из него
public
private
protected