Saltar al contenido principal
Documentos
Java keywordsMatrices JavaProgramación orientada a objetos en JavaJava File HandlingIntroducción a JavaConceptos básicos del lenguaje Java

Encapsulación Java

La encapsulación es un principio fundamental de la programación orientada a objetos (POO) en Java que consiste en agrupar los datos (variables) y los métodos (funciones) que operan sobre los datos en una sola unidad, conocida como clase. Restringe el acceso directo a algunos de los componentes de un objeto y puede evitar la modificación accidental de datos.

Finalidad de la encapsulación

  • Ocultar datos: La encapsulación permite ocultar al exterior la representación interna de un objeto. Sólo se exponen los detalles necesarios a través de una interfaz pública.
  • Mayor flexibilidad: Al controlar el acceso a los campos de una clase, puedes cambiar la implementación interna sin afectar al código externo que utiliza la clase.
  • Mantenimiento mejorado: La encapsulación ayuda a mantener el código manteniendo los campos privados y proporcionando métodos getter y setter públicos para modificar y ver los campos.

Implementar la encapsulación en Java

Para lograr la encapsulación en Java:

  1. Declara las variables de clase como private.
  2. Proporciona los métodos getter y setter de public para acceder y actualizar el valor de una variable privada.

Ejemplo 1: Encapsulación básica

public class Student {
    private String name;
    private int age;

    // Getter method for name
    public String getName() {
        return name;
    }

    // Setter method for name
    public void setName(String name) {
        this.name = name;
    }

    // Getter method for age
    public int getAge() {
        return age;
    }

    // Setter method for age
    public void setAge(int age) {
        if (age > 0) {
            this.age = age;
        }
    }
}

En este ejemplo, la clase Student tiene los campos privados name y age. Se proporcionan métodos públicos getter y setter para acceder a estos campos y modificarlos. El configurador de age incluye una comprobación de validación básica.

Ejemplo 2: Encapsulación con validación

public class BankAccount {
    private double balance;

    // Getter method for balance
    public double getBalance() {
        return balance;
    }

    // Setter method for balance with validation
    public void deposit(double amount) {
        if (amount > 0) {
            balance += amount;
        }
    }

    public void withdraw(double amount) {
        if (amount > 0 && amount <= balance) {
            balance -= amount;
        }
    }
}

La clase BankAccount encapsula el campo balance. Proporciona los métodos deposit y withdraw para modificar la balanza, garantizando que sólo se realizan operaciones válidas.

Consejos y buenas prácticas

  • Utiliza campos privados: Declara siempre los campos de clase como private para protegerlos de modificaciones externas.
  • Proporciona métodos de acceso: Utiliza los métodos getter y setter de public para controlar el acceso a los campos. Esto permite la validación y la flexibilidad para cambiar la implementación interna.
  • Lógica de validación: Implementa una lógica de validación en los métodos setter para garantizar que el estado del objeto sigue siendo coherente.
  • Clases inmutables: Considera hacer las clases inmutables (sin setters) si el estado del objeto no debe cambiar tras su creación. Esto mejora la seguridad y simplifica la programación concurrente.

Aprende Java Essentials

Desarrolla tus conocimientos de Java desde la base y domina los conceptos de programación.
Empieza a aprender gratis