Учебники

Java — Инкапсуляция

Инкапсуляция является одной из четырех основных концепций ООП. Другие три — это наследование, полиморфизм и абстракция.

Инкапсуляция в Java — это механизм объединения данных (переменных) и кода, действующих на данные (методы), в одно целое. В инкапсуляции переменные класса будут скрыты от других классов и доступны только через методы их текущего класса. Поэтому он также известен как скрытие данных .

Для достижения инкапсуляции в Java —

  • Объявите переменные класса как частные.

  • Предоставить общедоступные методы установки и получения для изменения и просмотра значений переменных.

Объявите переменные класса как частные.

Предоставить общедоступные методы установки и получения для изменения и просмотра значений переменных.

пример

Ниже приведен пример, демонстрирующий, как добиться инкапсуляции в Java.

/* File name : EncapTest.java */
public class EncapTest {
   private String name;
   private String idNum;
   private int age;

   public int getAge() {
      return age;
   }

   public String getName() {
      return name;
   }

   public String getIdNum() {
      return idNum;
   }

   public void setAge( int newAge) {
      age = newAge;
   }

   public void setName(String newName) {
      name = newName;
   }

   public void setIdNum( String newId) {
      idNum = newId;
   }
}

Публичные методы setXXX () и getXXX () являются точками доступа переменных экземпляра класса EncapTest. Обычно эти методы называются геттерами и сеттерами. Поэтому любой класс, который хочет получить доступ к переменным, должен обращаться к ним через эти методы получения и установки.

Доступ к переменным класса EncapTest можно получить с помощью следующей программы:

/* File name : RunEncap.java */
public class RunEncap {

   public static void main(String args[]) {
      EncapTest encap = new EncapTest();
      encap.setName("James");
      encap.setAge(20);
      encap.setIdNum("12343ms");

      System.out.print("Name : " + encap.getName() + " Age : " + encap.getAge());
   }
}

Это даст следующий результат —

Поля класса могут быть сделаны только для чтения или только для записи.

Класс может иметь полный контроль над тем, что хранится в его полях.