Модификаторы доступа в Java

В прошлом уроке мы рассмотрели базовые принципы инкапсуляции. Теперь, продолжая эту тему, пора познакомиться с модификаторами доступа public и private.

С их помощью можно ограничивать доступ к определённым элементам класса — например, полям и методам.

Если вспомнить пример из предидущего урока, то в классе Cat перед полями String name и String color не было указано никаких модификаторов. Однако, по умолчанию они являются public, что означает открытый доступ.

Благодаря этому мы могли напрямую через объект кота записать значения в его поля name и color вот так – somecat.name = “Barsik” и somecat.color = “White”.

Если мы поставим перед этими полями private, то это уже будет запрещено.

С полями класса помеченными как private можно работать только в пределах класса, то есть, например, в пределах методов или конструкторов этого класса.

Поясним на примере:

class Cat { // пусть name будет public, а color будет private public String name; private String color; Cat(String catColor) { color = catColor; // к color можно обращаться только // в пределах класса кошки и ниоткуда больше. // Например, ниже обращаемся к color // в конструкторе класса кошки для вывода // содержимого этого приватного поля на консоль. System.out.println(color); } void sayMeow() { System.out.println(“Meow”); } } class Modifiers { public static void main(String[] args) { Cat somecat = new Cat(“White”); // name помечен как public, поэтому мы можем // напрямую через объект записать // в него значение “Barsik”. somecat.name = “Barsik”; System.out.println(somecat.name); // Если мы раскомментируем строчку кода ниже // то будет ошибка, так как color помечен как private. // somecat.color = “White”; // То есть опять-таки, к private полям можно // обращаться только в пределах класса. } }

Вывод:

Search Icon

Все эти модификаторы также можно применять к методам класса, конструкторам и самим классам — с той же целью: ограничить доступ к внутренним элементам класса извне.

Свойства в ООП (getters, setters)

Геттеры и сеттеры в Java: зачем нужны, как работают с private полями, инкапсуляция данных и контроль доступа к свойствам класса.

Time to read: 14

Наследование в Java

Изучите наследование в Java: принцип повторного использования кода, ключевое слово extends, иерархия классов и доступ к полям родительского класса.

Time to read: 15

Полиморфизм

Полиморфизм в Java: переопределение методов, использование одного имени для разных задач. Практические примеры.

Time to read: 15