¿Qué es la encapsulación en Java?
La 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 los detalles de la información y proteger los datos y el comportamiento del objeto. Es uno de los cuatro conceptos OOP importantes. La clase encapsular es fácil de probar, por lo que también es mejor para las pruebas unitarias.
En este tutorial, aprenderá:
- ¿Qué es la encapsulación en Java?
- Aprenda la encapsulación con un ejemplo
- Ocultación de datos en Java
- Métodos Getter y Setter en Java
- Abstracción frente a encapsulación
- Ventajas de la encapsulación en Java
Haga clic aquí si el video no es accesible
Aprenda la encapsulación con un ejemplo
Para comprender qué es la encapsulación en detalle, considere la siguiente clase de cuenta bancaria con métodos de depósito y muestra el 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} elseaccount_balance = account_balance + a;}}
Suponga que un pirata informático 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.
Método 1: intenta depositar una cantidad no válida (digamos -100) en su cuenta bancaria manipulando el código.
Ahora, la pregunta es: ¿es eso posible? Dejemos investigar.
Por lo general, una variable en una clase se establece como "privada" como se muestra a continuación. Solo se puede acceder con los métodos definidos en la clase. Ninguna otra clase u objeto puede acceder a ellos.
Si un miembro de datos es privado, significa que solo se puede acceder 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 hacker no puede depositar la cantidad -100 en su cuenta.
Enfoque 2 : El primer enfoque del hacker no logró depositar la cantidad. A continuación, intenta depositar una cantidad de -100 mediante el método de "depósito".
Pero la implementación del método tiene una verificación de valores negativos. Entonces, el segundo enfoque también falla.
Por lo tanto, nunca exponga sus datos a un tercero. Lo que hace que su aplicación sea segura.
El código completo se puede pensar en una cápsula y solo se puede comunicar a través de los mensajes. De ahí el nombre de encapsulación.
Ocultación de datos en Java
Ocultar datos en Java es ocultar las variables de una clase de otras clases. Solo se puede acceder a través del método de su clase actual. Oculta los detalles de implementación 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 a la otra.
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 setter se usa para actualizar valores y el método getter se usa para leer o recuperar los valores. También se les conoce como accesor y mutador.
El siguiente código es un ejemplo de métodos getter y setter:
class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic 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 frente a encapsulación
A menudo, la encapsulación se malinterpreta con la 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 comprender esta diferencia es un teléfono móvil. Donde la lógica compleja en 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í, las funcionalidades significan "métodos" y los datos significan "variables"
- Así que mantenemos las variables y los 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 los 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 puede acceder a él dentro de la misma clase. Ninguna clase externa puede acceder al miembro de datos (variable) de otra clase.
- Sin embargo, si necesita acceder a estas variables, debe utilizar los métodos públicos "getter" y "setter" .