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