Інкапсуляція – один з принципів об’єктно орієнтованого програмування, який полягає в:

  • об’єкт об’єднує в собі дані та методи котрі маніпулюють цими даними
  • дані об’єкту захищені від прямого зовнішнього втручання, зміна стану об’єкту можлива тільки через виклик методів самого об’єкту

Найпростіший приклад клас Person:

package wiki.it.notes.java.oop.encapsulation;

public class Person {

    private String fullName;
    private int age;

    public String getFullName() {
        return fullName;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        if (age > 0) {
            this.age = age;
        } else {
            System.out.println("Тhe person's age is too young");
        }
    }
}

Та приклад взаємодії з об’єктом класу Person:

package wiki.it.notes.java.oop.encapsulation;

public class Main {

    public static void main(String[] args) {
        Person person = new Person();
        person.setFullName("Velma Acosta");
        person.setAge(35);
        System.out.println("person full name: " + person.getFullName() + " \nperson age: " + person.getAge());
    }
}

Результат:

person full name: Velma Acosta 
person age: 35

  • властивості екземпляру класу Person (поля fullName та age), закриті ззовні для читання та запису за допомогою модифікатору доступу private
  • зміна стану об’єкту відбувається через відкриті назовні методи setFullName та setAge (так звані setters), які мають модифікатор доступу public
  • отримання інформації про стан об’єкту відбувається через відкриті назовні методи getFullName та getAge (так звані getters), які мають модифікатор доступу public
  • setFullName, setAge, getFullName та getAge складають відкритий інтерфейс об’єкту, через який відбувається взаємодія з об’єктом зі сторони клієнтського коду
  • setAge не тільки записує значення в поле age, а й задає правило запису, що є додатковою можливістю контролю, за станом об’єкту

Мітки: