Java - Incapsulamento

Encapsulationè uno dei quattro concetti fondamentali dell'OOP. Gli altri tre sono ereditarietà, polimorfismo e astrazione.

L'incapsulamento in Java è un meccanismo di avvolgimento dei dati (variabili) e del codice che agisce sui dati (metodi) insieme come una singola unità. Nell'incapsulamento, le variabili di una classe saranno nascoste alle altre classi e sarà possibile accedervi solo tramite i metodi della loro classe corrente. Pertanto, è anche noto comedata hiding.

Per ottenere l'incapsulamento in Java -

  • Dichiarare le variabili di una classe come private.

  • Fornire metodi setter e getter pubblici per modificare e visualizzare i valori delle variabili.

Esempio

Di seguito è riportato un esempio che dimostra come ottenere l'incapsulamento in 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;
   }
}

I metodi pubblici setXXX () e getXXX () sono i punti di accesso delle variabili di istanza della classe EncapTest. Normalmente, questi metodi sono indicati come getter e setter. Pertanto, qualsiasi classe che desideri accedere alle variabili dovrebbe accedervi tramite questi getter e setter.

È possibile accedere alle variabili della classe EncapTest utilizzando il seguente programma:

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

Questo produrrà il seguente risultato:

Produzione

Name : James Age : 20

Vantaggi dell'incapsulamento

  • I campi di una classe possono essere di sola lettura o di sola scrittura.

  • Una classe può avere il controllo totale su ciò che è memorizzato nei suoi campi.