Інкапсуляція – один з принципів об’єктно орієнтованого програмування, який полягає в:
- об’єкт об’єднує в собі дані та методи котрі маніпулюють цими даними
- дані об’єкту захищені від прямого зовнішнього втручання, зміна стану об’єкту можлива тільки через виклик методів самого об’єкту
Найпростіший приклад клас 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, а й задає правило запису, що є додатковою можливістю контролю, за станом об’єкту