private – доступ только непосредственно из этого класса и его внутренних/вложенных классов.- package-private – доступ из всех классов этого пакета. Наследники доступа не имеют. Применяется когда модификатор не указан.
protected – доступ из всех классов этого пакета и всех наследников.public – никаких ограничений доступа.
Модификаторы доступа применяются к классам, интерфейсам, методам и полям. Они нужны для реализации
принципа наименьших привилегий и для отделения внутренней реализации от частей публичного API.
Вопросу посвящен
Effective Java Item 13 и
глава 6.6 спецификации.