Java - enkapsulacja

Encapsulationjest jedną z czterech podstawowych koncepcji OOP. Pozostałe trzy to dziedziczenie, polimorfizm i abstrakcja.

Hermetyzacja w Javie to mechanizm opakowywania danych (zmiennych) i kodu działającego na dane (metody) razem jako pojedyncza jednostka. Podczas hermetyzacji zmienne klasy będą ukryte przed innymi klasami i można do nich uzyskać dostęp tylko za pomocą metod ich bieżącej klasy. Dlatego jest również znany jakodata hiding.

Aby osiągnąć hermetyzację w Javie -

  • Zadeklaruj zmienne klasy jako prywatne.

  • Zapewnij publiczne metody ustawiające i pobierające do modyfikowania i przeglądania wartości zmiennych.

Przykład

Poniżej znajduje się przykład pokazujący, jak osiągnąć enkapsulację w Javie -

/* 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;
   }
}

Metody public setXXX () i getXXX () są punktami dostępu do zmiennych instancji klasy EncapTest. Zwykle metody te są określane jako pobierające i ustawiające. Dlatego każda klasa, która chce uzyskać dostęp do zmiennych, powinna uzyskać do nich dostęp za pośrednictwem tych metod pobierających i ustawiających.

Dostęp do zmiennych klasy EncapTest można uzyskać za pomocą następującego programu -

/* 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());
   }
}

To da następujący wynik -

Wynik

Name : James Age : 20

Korzyści z kapsułkowania

  • Pola klasy mogą być tylko do odczytu lub tylko do zapisu.

  • Klasa może mieć całkowitą kontrolę nad tym, co jest przechowywane w jej polach.