Инкапсуляция - предоставление пользователю компонентов (класс-капсула или же интерфейс) с объединенными и защищенными данными, готовыми для использования, но не для изменения или же раскрытия.
То есть, мы можем создать поле, но не хотим, чтобы кто-то его менял — добавим полю модификатор доступа приватный, но при этом предоставим возможность использовать это поле (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
}
}
Как мы видим, пользователь не может использовать закрытые (приватные) данные и методы, но мы можем с их помощью реализовывать методы для личного использования. Пользователю эти методы ни к чему.
Выводы из вышесказанного:
Весь цикл читайте на страничке Сергея Посьмашного.