Инкапсуляция в Java

ООП основывается на трёх ключевых принципах:Инкапсуляция, Полиморфизм, Наследование.

Начнем с инкапсуляции.

Инкапсуляция означает сокрытие деталей реализации класса от внешнего кода, который просто использует этот класс.

Это означает, что тому, кто создал объект класса и пользуется им, совсем не обязательно знать его внутреннюю реализацию — достаточно понимания доступных методов и правил их использования. То есть можно работать с полями и методами объекта, даже не видя сам класс, из которого он создан.

Если вспомнить пример из прошлого урока про кошку, то тому кто создал и пользуется классом кошки не обязательно видеть класс кошки.

Также инкапсуляция значит защиту внутренних данных класса от другого кода, никак не относящемуся к данному классу.

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

Простейший пример базовой инкапсуляции:

class Cat{ String name; String color; Cat (String catName, String catColor) { name = catName; color = catColor; } void sayMeow(){ System.out.println(“Meow”); } } class Dog { //Отсюда классу Dog не доступны поля кошки name и color, //а также метод sayMeow. То есть в этом классе нельзя //использовать содержимое класса Cat. String name; String color; Dog (String dogName, String dogColor) { name = dogName; color = dogColor; } void sayWuf(){ System.out.println(“Wuf”); } } class Incapsulation { public static void main(String[] args) { Cat somecat = new Cat(“Barsik”, “White”); System.out.println(somecat.name); } }

Это был бызовый пример инкапсуляции, но под инкапсуляцией также, конечно, имеют ввиду модификаторы доступа и свойства (геттеры, сеттеры), которые будут рассмотрены в следующих уроках.

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

Public и private в Java: как ограничивать доступ к полям и методам. Основы инкапсуляции и безопасность данных в ООП.

Time to read: 12

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

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

Time to read: 14

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

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

Time to read: 15