English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En este tutorial, aprenderá a través de ejemplos la encapsulación y la ocultación de datos en Java.
La encapsulación es una de las funciones importantes del programación orientada a objetos. La encapsulación es la asociación de campos y métodos en una única clase.
Agrupar campos y métodos similares dentro de una clase también ayuda a ocultar datos.
Por lo general, la encapsulación es el proceso de empaquetar código similar en un solo lugar.
En Java, podemos agrupar campos y métodos que se operan juntos en una única clase. Por ejemplo:
class Rectangle { int length; int breadth; public void getArea() {} }
En el programa anterior, el método getArea() calcula el área del rectángulo. Para calcular el área, necesita la longitud (length) y la anchura (breadth). Por lo tanto, los campos de datos length, breadth y el método getArea() se colocan dentro de la clase Rectangle.
La ocultación de datos es un método para limitar el acceso a los miembros de datos mediante la ocultación de detalles de implementación.
La encapsulación también proporciona un método para ocultar datos.
La ocultación de datos se puede lograr mediante modificador de acceso. En Java, hay cuatro modificadores de acceso:
public - Los atributos o métodos modificados son públicos y pueden ser accedidos en cualquier lugar, por defecto todos los atributos y métodos son públicos
private - Los atributos o métodos modificados son privados y no pueden ser accedidos fuera de la clase en la que se declaran
protected - Las propiedades o métodos modificados por protected están protegidos, al igual que private, la diferencia es que también se permite su acceso en las subclases
default - Es decir, sin ningún modificador de acceso, generalmente llamado "modo de acceso por defecto". En este modo, solo se permite el acceso dentro del mismo paquete.
Para obtener más información, visiteModificadores de Java。
class Person { private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } } class Main { public static void main(String[] args) { Person p1 = new Person(); p1.setAge(24); System.out.println("Mi edad es " + p1.getAge()); } }
Resultados de salida
Mi edad es 24
En el ejemplo anterior, tenemos un campo privado age. Debido a que es privado, no se puede acceder a él desde fuera de la clase. Para acceder a age, utilizamos métodos públicos getAge() y setAge(). Estos métodos se denominan métodos getter y setter.
Si intenta acceder al campo age desde la clase Main, se producirá un mensaje de error.
p1.age = 24; // error: age tiene acceso privado en Person
Configurar age como privado puede limitar el acceso no autorizado desde fuera de la clase. Esto es ocultación de datos.
class Person { protected String profession; protected void displayInfo() { System.out.println("I am a " + profession); } } class Teacher extends Person { public static void main(String[] args) { Teacher t1 = new Teacher(); t1.profession = "teacher"; t1.displayInfo(); } }
Resultados de salida
I am a teacher
En el programa anterior, creamos una clase Person que contiene el campo protegido profession y el método protegido displayInfo().
Ya hemos accedido a estos miembros desde la clase Teacher (subclase de Person).
En Java, la encapsulación puede ayudarnos a mantener juntos los campos y métodos relacionados, haciendo que nuestro código sea más ordenado y fácil de leer.
Ayuda a controlar las modificaciones de nuestros campos de datos. Consideremos una situación en la que deseamos que el campo age de la clase sea un número no negativo. Aquí, podemos establecer age como privado y aplicar lógica en el método setAge(). Por ejemplo:
class Person { private int age; public void setAge(int age) { if (age >= 0) { this.age = age; } } }
Los métodos getter y setter proporcionan acceso solo de lectura o solo de escritura a nuestros campos de clase. Por ejemplo:
getName() // Proporciona acceso solo de lectura setName() //Proporciona acceso solo de escritura
Ayuda a desacoplar los componentes del sistema. Estos componentes desacoplados pueden desarrollarse, probarse y depurarse de manera independiente y simultáneamente. Y, cualquier cambio en un componente específico no tendrá ningún efecto en otros componentes.
La gente generalmente considera que el encapsulamiento es la ocultación de datos, pero esto no es completamente correcto.
El encapsulamiento es el atar juntos campos y métodos relacionados.Esto nos permite lograr la ocultación de datos.El encapsulamiento en sí no es la ocultación de datos.