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.