El encapsulamiento es un principio clave de la Programación Orientada a Objetos (POO) que consiste en restringir el acceso directo a los datos de un objeto y proporcionar métodos para interactuar con ellos. En Java, los getters y setters son las herramientas principales para implementar este principio.
El encapsulamiento es la técnica de ocultar los detalles internos de una clase y permitir el acceso a sus atributos solo a través de métodos definidos. Esto asegura que los datos sean manipulados de manera controlada.
Los getters y setters son métodos públicos que permiten leer (get) y modificar (set) los valores de los atributos privados de una clase.
public class Persona {
private String nombre;
private int edad;
// Getter para el nombre
public String getNombre() {
return nombre;
}
// Setter para el nombre
public void setNombre(String nombre) {
this.nombre = nombre;
}
// Getter para la edad
public int getEdad() {
return edad;
}
// Setter para la edad con validación
public void setEdad(int edad) {
if (edad > 0) {
this.edad = edad;
} else {
System.out.println("La edad debe ser positiva.");
}
}
}
public class Main {
public static void main(String[] args) {
Persona persona = new Persona();
persona.setNombre("Juan");
persona.setEdad(25);
System.out.println("Nombre: " + persona.getNombre());
System.out.println("Edad: " + persona.getEdad());
}
}
Los setters permiten incluir validaciones antes de modificar un atributo, asegurando que los valores sean válidos.
public class CuentaBancaria {
private double saldo;
public double getSaldo() {
return saldo;
}
public void depositar(double cantidad) {
if (cantidad > 0) {
saldo += cantidad;
} else {
System.out.println("La cantidad debe ser positiva.");
}
}
public void retirar(double cantidad) {
if (cantidad > 0 && cantidad <= saldo) {
saldo -= cantidad;
} else {
System.out.println("Fondos insuficientes o cantidad inválida.");
}
}
}
public class Main {
public static void main(String[] args) {
CuentaBancaria cuenta = new CuentaBancaria();
cuenta.depositar(500);
cuenta.retirar(100);
System.out.println("Saldo actual: " + cuenta.getSaldo());
}
}