Модификаторы доступа в Java
Last updated: 3 мая 2025 г.В прошлом уроке мы рассмотрели базовые принципы инкапсуляции. Теперь, продолжая эту тему, пора познакомиться с модификаторами доступа public
и private
.
С их помощью можно ограничивать доступ к определённым элементам класса — например, полям и методам.
Если вспомнить пример из предидущего урока, то в классе Cat
перед полями String name
и String color
не было указано никаких модификаторов. Однако, по умолчанию они являются public
, что означает открытый доступ.
Благодаря этому мы могли напрямую через объект кота записать значения в его поля name и color вот так – somecat.name = “Barsik” и somecat.color = “White”.
Если мы поставим перед этими полями private, то это уже будет запрещено.
С полями класса помеченными как private можно работать только в пределах класса, то есть, например, в пределах методов или конструкторов этого класса.
Поясним на примере:
1class Cat {
2 // пусть name будет public, а color будет private
3 public String name;
4 private String color;
5
6 Cat(String catColor) {
7 color = catColor;
8 // к color можно обращаться только
9 // в пределах класса кошки и ниоткуда больше.
10 // Например, ниже обращаемся к color
11 // в конструкторе класса кошки для вывода
12 // содержимого этого приватного поля на консоль.
13 System.out.println(color);
14 }
15
16 void sayMeow() {
17 System.out.println("Meow");
18 }
19}
20
21class Modifiers {
22 public static void main(String[] args) {
23 Cat somecat = new Cat("White");
24 // name помечен как public, поэтому мы можем
25 // напрямую через объект записать
26 // в него значение "Barsik".
27 somecat.name = "Barsik";
28 System.out.println(somecat.name);
29
30 // Если мы раскомментируем строчку кода ниже
31 // то будет ошибка, так как color помечен как private.
32 // somecat.color = "White";
33
34 // То есть опять-таки, к private полям можно
35 // обращаться только в пределах класса.
36 }
37}
Вывод:

Все эти модификаторы также можно применять к методам класса, конструкторам и самим классам — с той же целью: ограничить доступ к внутренним элементам класса извне.
Следующие уроки
Свойства в ООП (getters, setters)
14
мин.
Наследование в Java
15
мин.
Полиморфизм
15
мин.