Encapsulación de Java
Encapsulación Java
En este tutorial, aprenderá sobre la encapsulación y la ocultación de datos en Java con la ayuda de ejemplos.
Encapsulación Java
La encapsulación es una de las características clave de la programación orientada a objetos. La encapsulación se refiere a la agrupación de campos y métodos dentro de una sola clase.
Evita que las clases externas accedan y cambien campos y métodos de una clase. Esto también ayuda a lograr la ocultación de datos .
Ejemplo 1:Encapsulación de Java
class Area {
// fields to calculate area
int length;
int breadth;
// constructor to initialize values
Area(int length, int breadth) {
this.length = length;
this.breadth = breadth;
}
// method to calculate area
public void getArea() {
int area = length * breadth;
System.out.println("Area: " + area);
}
}
class Main {
public static void main(String[] args) {
// create object of Area
// pass value of length and breadth
Area rectangle = new Area(5, 6);
rectangle.getArea();
}
}
Salida
Area: 30
En el ejemplo anterior, hemos creado una clase llamada Area . El propósito principal de esta clase es calcular el área.
Para calcular un área, necesitamos dos variables:longitud y amplitud y un método:getArea()
. Por lo tanto, agrupamos estos campos y métodos dentro de una sola clase.
Aquí, también se puede acceder a los campos y métodos desde otras clases. Por lo tanto, esto no es ocultación de datos .
Esto es solo encapsulación . Solo mantenemos códigos similares juntos.
Nota :La gente suele considerar la encapsulación como una forma de ocultar datos, pero eso no es del todo cierto.
La encapsulación se refiere a la agrupación de campos y métodos relacionados. Esto se puede utilizar para lograr la ocultación de datos. La encapsulación en sí misma no oculta datos.
¿Por qué encapsulación?
- En Java, la encapsulación nos ayuda a mantener juntos los campos y métodos relacionados, lo que hace que nuestro código sea más limpio y fácil de leer.
- Ayuda a controlar los valores de nuestros campos de datos. Por ejemplo,
class Person { private int age; public void setAge(int age) { if (age >= 0) { this.age = age; } } }
Aquí, estamos haciendo la edad variableprivate
y aplicando la lógica dentro delsetAge()
método. Ahora, edad no puede ser negativo. - Los métodos getter y setter proporcionan solo lectura o solo escritura acceso a nuestros campos de clase. Por ejemplo,
getName() // provides read-only access setName() // provides write-only access
- Ayuda a desacoplar los componentes de un sistema. Por ejemplo, podemos encapsular el código en varios paquetes.
Estos componentes desacoplados (paquete) se pueden desarrollar, probar y depurar de forma independiente y simultánea. Y cualquier cambio en un componente en particular no tiene ningún efecto en otros componentes. - También podemos lograr la ocultación de datos mediante la encapsulación. En el ejemplo anterior, si cambiamos la variable de largo y ancho a privada, entonces el acceso a estos campos está restringido.
Y se mantienen ocultos de las clases externas. Esto se llama ocultación de datos .
Ocultación de datos
La ocultación de datos es una forma de restringir el acceso de nuestros miembros de datos al ocultar los detalles de implementación. La encapsulación también proporciona una forma de ocultar datos.
Podemos usar modificadores de acceso para lograr la ocultación de datos. Por ejemplo,
Ejemplo 2:Ocultación de datos usando el especificador privado
class Person {
// private field
private int age;
// getter method
public int getAge() {
return age;
}
// setter method
public void setAge(int age) {
this.age = age;
}
}
class Main {
public static void main(String[] args) {
// create an object of Person
Person p1 = new Person();
// change age using setter
p1.setAge(24);
// access age using getter
System.out.println("My age is " + p1.getAge());
}
}
Salida
My age is 24
En el ejemplo anterior, tenemos un private
campo edad . Ya que es private
, no se puede acceder desde fuera de la clase.
Para acceder a edad , hemos usado public
métodos:getAge()
y setAge()
. Estos métodos se denominan métodos getter y setter.
Haciendo edad privado nos permitió restringir el acceso no autorizado desde fuera de la clase. Esto es ocultación de datos .
Si intentamos acceder a la edad campo de Principal clase, obtendremos un error.
// error: age has private access in Person
p1.age = 24;
Java