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:
Declara las variables de clase como private.
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
publicclassStudent{private String name;private int age;// Getter method for namepublic String getName(){return name;}// Setter method for namepublicvoidsetName(String name){this.name = name;}// Getter method for agepublic int getAge(){return age;}// Setter method for agepublicvoidsetAge(int age){if(age >0){this.age = age;}}}Con la tecnología de
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
publicclassBankAccount{private double balance;// Getter method for balancepublic double getBalance(){return balance;}// Setter method for balance with validationpublicvoiddeposit(double amount){if(amount >0){
balance += amount;}}publicvoidwithdraw(double amount){if(amount >0&& amount <= balance){
balance -= amount;}}}Con la tecnología de
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.
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
Implementar la encapsulación en Java
Para lograr la encapsulación en Java:
private.publicpara acceder y actualizar el valor de una variable privada.Ejemplo 1: Encapsulación básica
En este ejemplo, la clase
Studenttiene los campos privadosnameyage. Se proporcionan métodos públicos getter y setter para acceder a estos campos y modificarlos. El configurador deageincluye una comprobación de validación básica.Ejemplo 2: Encapsulación con validación
La clase
BankAccountencapsula el campobalance. Proporciona los métodosdepositywithdrawpara modificar la balanza, garantizando que sólo se realizan operaciones válidas.Consejos y buenas prácticas
privatepara protegerlos de modificaciones externas.publicpara controlar el acceso a los campos. Esto permite la validación y la flexibilidad para cambiar la implementación interna.