Encapsulación en Java: ¿cómo dominar las OOP con encapsulación?



Este artículo sobre Encapsulación en Java lo ayudará a comprender los conceptos básicos de cómo ocultar detalles de implementación junto con varios ejemplos simples.

La programación orientada a objetos o mejor conocida como OOP es uno de los pilares principales de Java que ha aprovechado su poder y facilidad de uso. Para convertirse en un desarrollador profesional de Java, debe tener un control impecable sobre los distintos me gusta , Abstracción , Encapsulación y polimorfismo. A través de este artículo, le daré una visión completa de uno de los conceptos más importantes de POO, es decir, la encapsulación en Java y cómo se logra.

A continuación se muestran los temas que discutiré en este artículo:





También puede pasar por esta grabación de donde podrá comprender los temas de manera detallada con ejemplos.



Introducción a la encapsulación

La encapsulación se refiere a agrupar los datos en una sola unidad. Es el mecanismo que une el código y los datos que manipula. Otra forma de pensar en la encapsulación es que es un escudo protector que evita que el código que se encuentra fuera de este escudo acceda a los datos. En este, las variables o datos de un está oculto a cualquier otra clase y solo se puede acceder a él a través de cualquier función miembro de la propia clase en la que están declarados.

Ahora, tomemos el ejemplo de una cápsula médica, donde el medicamento siempre está seguro dentro de la cápsula. Del mismo modo, a través del encapsulado, los métodos y variables de una clase están bien ocultos y seguros.



Encapsulación -Encapsulación en Java-EdurekaLa encapsulación en Java se puede lograr mediante:

cómo hacer poderes en java
  • Declarar las variables de una clase como privadas.
  • Proporcionar métodos setter y getter públicos para modificar y ver los valores de las variables.

Ahora, veamos el código para comprender mejor la encapsulación:

public class Student {private String name public String getName () {return name} public void setName (String name) {this.name = name}} class Test {public static void main (String [] args) {Student s = new Student () s.setName ('Harry Potter') System.out.println (s.getName ())}}

Como puede ver en el código anterior, he creado una clase Student que tiene un nombre . A continuación, he creado un captador y un configurador para obtener y establecer el nombre de un estudiante. Con la ayuda de estos métodos, cualquier clase que desee acceder a la variable de nombre debe hacerlo utilizando estos métodos getter y setter.

Ahora veamos un ejemplo más y comprendamos la encapsulación en profundidad. En este ejemplo, la clase Car tiene dos campos: name y topSpeed. Aquí, ambos se declaran como privados, lo que significa que no se puede acceder a ellos directamente fuera de la clase. Tenemos algunos métodos getter y setter como getName, setName, setTopSpeed, etc., y se declaran como públicos. Estos métodos están expuestos a 'forasteros' y se pueden utilizar para cambiar y recuperar datos del objeto Car. Tenemos un método para establecer la velocidad máxima del vehículo y dos métodos de obtención para recuperar el valor de velocidad máxima en MPH o KMHt. Básicamente, esto es lo que hace la encapsulación: oculta la implementación y nos da los valores que queremos. Ahora, veamos el código a continuación.

paquete Edureka public class Car {private String name private double topSpeed ​​public Car () {} public String getName () {return name} public void setName (String name) {this.name = name} public void setTopSpeed ​​(double speedMPH) {topSpeed = speedMPH} public double getTopSpeedMPH () {return topSpeed} public double getTopSpeedKMH () {return topSpeed ​​* 1.609344}}

Aquí, el programa principal crea un objeto Car con un nombre dado y usa el método setter para almacenar la velocidad máxima para esta instancia. Al hacer esto, podemos obtener fácilmente la velocidad en MPH o KMH sin importar cómo se convierte la velocidad en la clase de automóvil.

paquete Edureka public class Ejemplo {public static void main (String args []) Car car = new Car () car.setName ('Mustang GT 4.8 litros V8') car.setTopSpeed ​​(201) System.out.println (car. getName () + 'la velocidad máxima en MPH es' + car.getTopSpeedMPH ()) System.out.println (car.getName () + 'la velocidad máxima en KMH es' + car.getTopSpeedKMH ())

So, así es como se puede lograr la encapsulación en Java. Ahora, avancemos más y veamos por qué necesitamos la encapsulación.

¿Por qué necesitamos la encapsulación en Java?

La encapsulación es esencial en Java porque:

  • Controla la forma de accesibilidad de los datos
  • Modifica el código en base a los requisitos.
  • Nos ayuda a conseguir una pareja suelta
  • Logra la simplicidad de nuestra aplicación
  • También le permite cambiar la parte del código sin interrumpir ninguna otra función o código presente en el programa.

Ahora, consideremos un pequeño ejemplo que ilustra la necesidad de encapsulación.

class Student {int id String name} public class Demo {public static void main (String [] args) {Student s = new Student () s.id = 0 s.name = '' s.name = null}}

En el ejemplo anterior, contiene dos variables de instancia como modificador de acceso. Entonces, cualquier clase dentro del mismo paquete puede asignar y cambiar valores de esas variables creando un objeto de esa clase. Por lo tanto, no tenemos control sobre los valores almacenados en la clase Student como variables. Para resolver este problema, encapsulamos la clase Student.

Entonces, estos fueron los pocos indicadores que describen la necesidad de encapsulación. Ahora, veamos algunos beneficios de la encapsulación.

Beneficios de la encapsulación

    • Ocultación de datos: Aquí, un usuario no tendrá idea sobre la implementación interna de la clase. Incluso el usuario no se dará cuenta de cómo la clase almacena valores en las variables. Él / ella solo se dará cuenta de que estamos pasando los valores a un método setter y las variables se están inicializando con ese valor.
    • Mayor flexibilidad: Aquí, podemos hacer que las variables de la clase sean de solo lectura o de solo escritura según nuestro requisito. En caso de que desee hacer que las variables sean de solo lectura, tenemos que omitir los métodos de establecimiento como setName (),edad establecida() etc. o si deseamos que las variables sean de solo escritura, entonces tenemos que omitir los métodos get como getName (), getAge () etc. del programa anterior.
    • Reutilización: También mejora la reutilización y es fácil de cambiar con nuevos requisitos.

Ahora que hemos entendido los fundamentos de la encapsulación, profundicemos en el último tema de este artículo y comprendamos la encapsulación en detalle con la ayuda de un ejemplo en tiempo real.

Un ejemplo de encapsulación en tiempo real

Consideremos un ejemplo de televisión y comprendamos cómo los detalles de implementación interna se ocultan a la clase externa.Básicamente, en este ejemplo, estamos ocultando datos de código interno, es decir, circuitos del mundo externo junto a la cubierta. Ahora en , esto se puede lograr con la ayuda de modificadores de acceso. Los modificadores de acceso establecen el acceso o el nivel de una clase, las variables de los constructores, etc. Como puede ver en el siguiente código, he usado un modificador de acceso privado para restringir el nivel de acceso de la clase. Las variables declaradas como privadas son accesibles solo dentro de la clase Televisión.

televisión de clase pública {privado doble ancho privado doble altura privado doble tamaño de pantalla privado int maxVolume imprimir int volumen privado booleano potencia televisión pública (doble ancho, doble altura, doble screenSize) {this.width this.height this.screenSize = ScreenSize} public double channelTuning (int channel) {switch (channel) {case1: return 34.56 case2: return 54.89 case3: return 73.89 case1: return 94.98} return 0} public int decrecimientoVolumen () {if (0volumen) volumen ++ retorno volumen}} prueba de clase {público estático void main (String args []) {Televisión t = nueva Televisión (11.5,7,9) t.powerSwitch () t.channelTuning (2) t.decreaseVolume () t.increaseVolume () televisión. // Lanza un error porque la variable es privada y no se puede acceder fuera de la clase}}

En el ejemplo anterior, he declarado todas las variables como privadas y los métodos, constructores y clases como públicas. Aquí, se puede acceder a los constructores y métodos fuera de la clase. Cuando creoun objetode la clase Televisión, puede acceder a los métodos y constructores presentes en la clase, mientras que las variables declaradas con modificador de acceso privado están ocultas. Por eso, cuando intentas acceder variable de ancho en el ejemplo anterior, arrojaun error. Así es como los detalles de la implementación interna se ocultan a las otras clases. Así es como se logra la encapsulación en Java.

Esto nos lleva al final de este artículo sobre 'Encapsulación en Java'. Espero, lo encontró informativo y ayudó a agregar valor a su conocimiento. Si desea obtener más información sobre Java, puede consultar la

Ahora que ha entendido 'qué es la encapsulación en Java', consulte la por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. El curso de certificación y capacitación Java J2EE y SOA de Edureka está diseñado para estudiantes y profesionales que desean ser desarrolladores de Java. El curso está diseñado para darle una ventaja en la programación de Java y capacitarlo para los conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog 'Encapsulación en Java' y nos comunicaremos con usted lo antes posible.