Java: encapsulación

Encapsulationes uno de los cuatro conceptos fundamentales de POO. Los otros tres son herencia, polimorfismo y abstracción.

La encapsulación en Java es un mecanismo para envolver los datos (variables) y el código que actúa sobre los datos (métodos) juntos como una sola unidad. En la encapsulación, las variables de una clase se ocultarán de otras clases y solo se puede acceder a ellas a través de los métodos de su clase actual. Por lo tanto, también se conoce comodata hiding.

Para lograr la encapsulación en Java:

  • Declare las variables de una clase como privadas.

  • Proporcione métodos públicos de establecimiento y obtención para modificar y ver los valores de las variables.

Ejemplo

A continuación se muestra un ejemplo que demuestra cómo lograr la encapsulación en 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;
   }
}

Los métodos públicos setXXX () y getXXX () son los puntos de acceso de las variables de instancia de la clase EncapTest. Normalmente, estos métodos se denominan getters y setters. Por lo tanto, cualquier clase que quiera acceder a las variables debe acceder a ellas a través de estos captadores y definidores.

Se puede acceder a las variables de la clase EncapTest usando el siguiente programa:

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

Esto producirá el siguiente resultado:

Salida

Name : James Age : 20

Beneficios de la encapsulación

  • Los campos de una clase se pueden hacer de solo lectura o de solo escritura.

  • Una clase puede tener un control total sobre lo que se almacena en sus campos.