Короткий ответ
Спецификаторы (модификаторы) доступа определяют, из каких мест программы видны классы, поля, методы и конструкторы. В Java четыре уровня: private, package-private (по умолчанию, без модификатора), protected и public. Это практическая реализация инкапсуляции: наружу остаётся только безопасный публичный интерфейс.
Как это работает подробнее
Уровни доступа перечисляют по нарастанию видимости.
- private. Самый строгий: член доступен только внутри того же класса; ни наследники, ни другие классы его не видят.
- package-private (по умолчанию). Модификатор не пишется: член доступен всем классам внутри того же пакета и не виден за его пределами.
- protected. Член доступен внутри пакета, а также наследникам класса из других пакетов.
- public. Доступен отовсюду — из любого класса любого пакета, при условии что доступен сам класс.
- Классы верхнего уровня. Для них применимы только
publicи package-private: класс не может бытьprivateилиprotected.
Пример кода
Circle.java
package com.example.shapes;
public class Circle {
private double radius; // только внутри Circle
String color; // package-private: виден в пакете
protected double area; // пакет + наследники из других пакетов
public double getRadius() { // виден отовсюду
return radius;
}
}Что использовать на практике
- Начинать с
privateи открывать доступ только при реальной необходимости. - Скрывать детали реализации, оставляя наружу безопасный публичный интерфейс.
- Для членов, которые нужны наследникам, использовать
protected, а неpublic.
Подводные камни
- Помнить, что класс верхнего уровня не может быть
privateилиprotected. - При переопределении нельзя сужать область видимости (например, заменять
publicнаprotected), расширять — можно. - Путать package-private (без модификатора) с
protected: второй дополнительно виден наследникам из других пакетов.
Как отвечать на собеседовании
- Каркас ответа: объясните назначение модификаторов → перечислите четыре уровня по нарастанию видимости → уточните ограничения для классов верхнего уровня → добавьте правило переопределения и связь модификаторов с инкапсуляцией.