Інкапсуляція даних як принцип ООП

Інкапсуляція — надання користувачу компонентів (клас-капсула або інтерфейс) з об'єднаними і захищеними даними, готовими для використання, але не для зміни або розкриття.


Ми можемо створити поле, але не хочемо, щоб хтось його змінював — додаємо полю приватний модифікатор доступу, але водночас дозволяємо використовувати це поле (get і set):

class Test {
    private int testField;

    public void setTestField(int testField) {
    this.testField = testField;
  }
  public int getTestField() {
    return testField;
  }

  public int getTestFieldDoubled() {
    return doubleTheResult(testField);
  }

  private int doubleTheResult(int param) {
    return param*2;
  }
}

public class Main {
    public static void main(String args[]) {
Test test = new Test();
  test.setTestField(4);
  int doubledTestField = test.getTestFieldDoubled();
      System.out.println(doubledTestField); //8
}
}


Як бачимо, користувач не має змоги використовувати закриті (приватні) дані та методи, але з їхньою допомогою ми можемо реалізовувати методи для особистого використання. Користувачу вони не потрібні.

Висновки з вищевикладеного:

  • Інкапсуляція забезпечує нас набором поля-методи.
  • Користувачу недоступні методи, необхідні для втілення логіки.
  • Усі поля мають бути приватними, а доступ до них можна побудувати через публічні методи (get і set).
  • 2 * 4 = 8.

Весь цикл читайте на сторінці Сергія Посьмашного.