Encapsulación en Java OOP con ejemplo


¿Qué es la encapsulación en Java?

Encapsulación en Java es un mecanismo para agrupar variables (datos) y métodos (código) como una sola unidad. Es el proceso de ocultar información details y proteger los datos y el comportamiento del objeto. Es uno de los cuatro POO importantes. concepts. La clase encapsulate es fácil de probar, por lo que también es mejor para pruebas unitarias.

En este tutorial, aprenderá-

Haga Clic en esta página si el video no es accesible

Aprenda la encapsulación con un ejemplo

Para comprender qué es la encapsulación en detalle, considere lo siguientewing clase de cuenta bancaria con métodos de depósito y mostrar saldo

class Account {
    private int account_number;
    private int account_balance;

    public void show Data() {
        //code to show data 
    }

    public void deposit(int a) {
        if (a < 0) {
            //show error 
        } else
            account_balance = account_balance + a;
    }
}

Supongamos que un hacker logró acceder al código de su cuenta bancaria. Ahora, intenta depositar la cantidad -100 en su cuenta de dos maneras. Veamos su primer método o enfoque.

Enfoque 1: Intenta depositar una cantidad no válida (digamos -100) en su cuenta bancaria manipulando el código.

Encapsulación en Java

Ahora, la pregunta es – ¿Es eso posible? Vamos a investigar.

Por lo general, una variable de una clase se establece como "privada", como se muestra a continuación. Sólo se puede acceder a él con los métodos definidos en la clase. Ninguna otra clase u objeto puede acceder a ellos.

Encapsulación en Java

Si un miembro de datos es privado, significa que solo se puede acceder a él dentro de la misma clase. Ninguna clase externa puede acceder a datos privados de miembros o variables de otra clase.

Entonces, en nuestro caso, el pirata informático no puede depositar la cantidad -100 en su cuenta.

Encapsulación en Java

Enfoque 2: El primer acercamiento del hacker no logró depositar la cantidad. A continuación, intenta depositar una cantidad -100 utilizando el método de "depósito".

Encapsulación en Java

Pero la implementación del método tiene una verificación de valores negativos. Por tanto, el segundo enfoque también fracasa.

Encapsulación en Java

Por lo tanto, nunca expone sus datos a un tercero. Lo que hace que su aplicación sea segura.

Encapsulación en Java

Se puede pensar en el código completo como una cápsula y solo se puede comunicar a través de mensajes. De ahí el nombre de encapsulación.

Ocultación de datos en Java

Ocultación de datos en Java está ocultando las variables de una clase a otras clases. Solo se puede acceder a él a través del método de su clase actual. Oculta la implementación details de los usuarios. Pero más que ocultar datos, está destinado a una mejor gestión o agrupación de datos relacionados.

Para lograr un menor grado de encapsulación en Java, puede utilizar modificadores como "protegido" o "público". Con la encapsulación, los desarrolladores pueden cambiar una parte del código fácilmente sin afectar otras.

Getter y Setter en Java

Getter y Setter en Java Son dos métodos convencionales que se utilizan para recuperar y actualizar valores de una variable. Se utilizan principalmente para crear, modificar, eliminar y ver los valores de las variables. El método de establecimiento se utiliza para actualizar valores y el método de obtención se utiliza para leer o recuperar los valores. También se les conoce como accesor y mutador.

El following El código es un ejemplo de métodos getter y setter:

class Account{ 
private int account_number;
private int account_balance; 
    // getter method
	public int getBalance() {
        return this.account_balance;
    }
    // setter method
	public void setNumber(int num) {
        this.account_number = num;
    }
}

En el ejemplo anterior, el método getBalance() es un método getter que lee el valor de la variable account_balance y el método setNumber() es un método setter que establece o actualiza el valor de la variable account_number.


Abstracción versus encapsulación

A menudo la encapsulación se malinterpreta con Abstracción. Estudiemos-

  • La encapsulación se trata más de "Cómo" lograr una funcionalidad.
  • La abstracción se trata más de "Qué" puede hacer una clase.

Un ejemplo sencillo para entender esta diferencia es un teléfono móvil. donde la complex La lógica de la placa de circuito está encapsulada en una pantalla táctil y se proporciona la interfaz para abstraerla.

Ventajas de la encapsulación en Java

  • La encapsulación vincula los datos con sus funcionalidades relacionadas. Aquí funcionalidades significan "métodos" y datos significan "variables".
  • Entonces mantenemos variables y métodos en un solo lugar. Ese lugar es "clase". La clase es la base para la encapsulación.
  • Con Java Encapsulation, puede ocultar (restringir el acceso) a miembros de datos críticos en su código, lo que mejora la seguridad.
  • Como comentamos anteriormente, si un miembro de datos se declara "privado", solo se podrá acceder a él dentro de la misma clase. Ninguna clase externa puede acceder a miembros de datos (variables) de otra clase.
  • Sin embargo, si necesita acceder a estas variables, debe usar “captador” y “establecedor” públicos métodos.