В Java модификаторы доступа управляют видимостью классов, методов и полей.
1.
public:- Видимость: Доступен из любого другого класса.
- Использование: Когда класс, метод или поле объявлены как
public, они доступны из любого класса в любом пакете.- Пример:
public class MyClass {
public int myField;
public void myMethod() {
// Реализация метода
}
}
Здесь
myField и myMethod доступны из любого другого класса.2.
protected:- Видимость: Доступен внутри того же пакета и для подклассов (даже если они находятся в других пакетах).
- Использование: Полезно, когда нужно разрешить доступ подклассам, но ограничить доступ для несвязанных классов вне пакета.
- Пример:
public class MyClass {
protected int myField;
protected void myMethod() {
// Реализация метода
}
}
Здесь
myField и myMethod доступны для любого подкласса MyClass, даже если он находится в другом пакете.3.
package-private (по умолчанию, без модификатора):- Видимость: Доступен только внутри того же пакета.
- Использование: Если модификатор доступа не указан, класс, метод или поле считаются package-private. Это уровень доступа по умолчанию.
- Пример:
class MyClass {
int myField;
void myMethod() {
// Реализация метода
}
}
Здесь
myField и myMethod доступны только для классов внутри того же пакета.4.
private:- Видимость: Доступен только внутри того же класса.
- Использование: Используется для инкапсуляции внутренних деталей класса, предотвращая доступ извне.
- Пример:
public class MyClass {
private int myField;
private void myMethod() {
// Реализация метода
}
}
Здесь
myField и myMethod доступны только внутри MyClass.📌 Краткая таблица:
| Модификатор доступа | Тот же класс | Тот же пакет | Подклассы | Другие пакеты |
|---------------------|--------------|--------------|-----------|---------------|
|
public | Да | Да | Да | Да ||
protected | Да | Да | Да | Нет ||
package-private | Да | Да | Нет | Нет ||
private | Да | Нет | Нет | Нет |💡Основные моменты:
- Используйте
public для API и методов/полей, которые должны быть доступны всем.- Используйте
protected для методов/полей, которые должны быть доступны подклассам, но не всем остальным.- Используйте
package-private для внутренней реализации, которая не должна быть доступна вне пакета.- Используйте
private для инкапсуляции, скрывая детали реализации внутри класса.👉@BookJava