Ответ
Модификаторы доступа в Java определяют область видимости (доступность) классов, методов, полей и конструкторов. Они являются ключевым механизмом инкапсуляции.
Четыре уровня доступа (от самого слабого к самому строгому):
| Модификатор | Видимость внутри класса | Видимость внутри пакета | Видимость для подклассов (наследников) | Видимость везде |
|---|---|---|---|---|
private |
✅ | ❌ | ❌ | ❌ |
default (package-private)(когда модификатор не указан) |
✅ | ✅ | ❌ | ❌ |
protected |
✅ | ✅ | ✅ | ❌ |
public |
✅ | ✅ | ✅ | ✅ |
Примеры и типичное применение:
// 1. public - доступ отовсюду. Используется для API.
public class ApiService {
public void publicMethod() { /* ... */ }
}
// 2. protected - доступ в пакете и для наследников.
class BaseClass {
protected void helperMethod() { /* Для внутренней логики наследников */ }
}
// 3. default (package-private) - доступ только внутри пакета.
// Идеально для скрытия внутренней реализации пакета.
class PackagePrivateHelper { // Модификатор не указан
void packageMethod() { /* ... */ }
}
// 4. private - доступ только внутри своего класса.
// Основа инкапсуляции, скрытие деталей реализации.
class BankAccount {
private double balance; // Прямой доступ извне запрещён
public double getBalance() { // Доступ через public-метод (геттер)
return balance;
}
}
Правила для классов:
- В одном файле может быть только один
public-класс, и его имя должно совпадать с именем файла. - Классы верхнего уровня могут быть только
publicилиdefault(package-private).