Encapsulamiento en Java: Ocultación Segura de Datos y Control de Acceso
El encapsulamiento es uno de los cuatro pilares fundamentales de la POO (junto con herencia, polimorfismo y abstracción).
En Java, encapsulamiento es el mecanismo de envolver datos (variables) y código que opera sobre ellos (métodos) en una sola unidad. Las variables de una clase se ocultan de otras clases y solo se acceden mediante los métodos de su propia clase. Por eso también se conoce como ocultación de datos (data hiding).
Cómo Lograr Encapsulamiento en Java
- Declarar las variables de la clase como
private. - Proporcionar métodos
publicsetter (modificar) y getter (leer) para acceder a los valores.
Ejemplo Completo: Clase EncapTest
public class EncapTest {
private String name;
private String idNum;
private int age;
// Getters
public int getAge() { return age; }
public String getName() { return name; }
public String getIdNum() { return idNum; }
// Setters
public void setAge(int newAge) { age = newAge; }
public void setName(String newName) { name = newName; }
public void setIdNum(String newId) { idNum = newId; }
}
Los métodos setXxx() y getXxx() son los puntos de acceso. Cualquier clase externa debe usarlos.
Uso desde Otra Clase
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("Nombre: " + encap.getName() + " Edad: " + encap.getAge());
}
}
Salida: Nombre: James Edad: 20
Beneficios del Encapsulamiento
- Campos de solo lectura o solo escritura: Omite setter o getter según necesidad.
- Control total: La clase valida/transforma datos antes de almacenarlos (ej. rechazar edad negativa).
- Mantenibilidad: Cambios internos no rompen código cliente si la interfaz pública se mantiene.
- Seguridad: Evita manipulación directa e inconsistencias.
Ejemplo con Validación en Setter
public class Person {
private int age;
public int getAge() { return age; }
public void setAge(int age) {
if (age < 0 || age > 150) {
throw new IllegalArgumentException("Edad inválida: " + age);
}
this.age = age;
}
}
Encapsulamiento y Principio de Ocultación de Información
El encapsulamiento apoya el principio de ocultación de información: los módulos deben exponer solo lo necesario. Reduce el acoplamiento y permite evolucionar la implementación independientemente.
Buenas Prácticas
- Siempre usa
privatepara campos (salvo constantesstatic final). - Expón getters/setters solo cuando sea necesario.
- Considera inmutabilidad: si el objeto no debe cambiar, omite setters y haz campos
final. - Usa
defensive copyingal devolver objetos mutables (arrays, colecciones,Date).
Java
- Palabra clave final en Java: Variables, métodos y clases
- Operador instanceof en Java: Guía completa
- Dominando la encapsulación en Java: Guía práctica de ocultamiento de datos
- Entendiendo las clases anidadas estáticas en Java: Uso, diferencias y ejemplos
- Dominando las clases internas anónimas en Java: Definición, sintaxis y ejemplos prácticos
- Patrón Singleton en Java explicado: Cómo implementarlo y usarlo de forma segura
- Dominando la Reflexión en Java: Inspeccionando clases, métodos y campos en tiempo de ejecución
- Dominando ObjectOutputStream de Java: Serialización, Métodos y Ejemplos Prácticos
- Dominando Java Generics: Construyendo Código Reutilizable y Type-Safe
- Dominando las operaciones de archivos en Java con java.io: creación, lectura, escritura y eliminación
- Encapsulamiento en Java: Ocultación Segura de Datos y Control de Acceso