Принципы ООП. Инкапсуляция

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

То есть, мы можем создать поле, но не хотим, чтобы кто-то его менял — добавим полю модификатор доступа приватный, но при этом предоставим возможность использовать это поле (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.

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