¿Que es la herencia en Java? Con ejemplos

herencia

La herencia en Java es la manera en la que una clase adquiere los atributos y comportamiento de otra clase. De manera que esta nueva clase es una especialización de la original. Ahora veamos que quiere decir todo esto en español y con ejemplos.

¿Para que sirve la Herencia?

En ocasiones podemos vernos en la necesidad de crear objetos parecidos y con una estrecha relación entre si. Podría darse el caso de estemos creando un sistema en que debamos manejar el los ingresos de los empleados de una empresa. Entre todos los escenarios que debemos considerar al desarrollar dicho sistema podemos ver que no todos los empleados tiene el mismo tipo de ingresos.

Nota no es recomendable usar el tipo de dato Double para operaciones matemáticas. De preferencia usar BigDecimal, En este caso es solo para ejemplificar la herencia y no desviar el tema.

Podemos observar en el diagrama de clases anterior que la mayoría de los componentes de la clase se duplican con excepción de que el objeto vendedor tiene un atributo mas llamado comisiones ya que este tipo de empleo además de su sueldo base obtiene pagos por cada venta que realiza y el atributo área en el Tipo Gerente. Como desarrolladores es nuestro trabajo observar las similitudes y poder simplificarlo lo más que se pueda.

En este ejemplo podemos ver dos objetos Gerente y Vendedor. Podríamos definir que ambos son empleados de la misma compañía ¿Cierto? Entonces podríamos re definirlo de la siguiente manera.

Ahora en el diagrama podemos ver como funciona la Herencia, ambos tipo de objetos Gerente y Vendedor heredan los atributos y métodos. ¿Qué quiere decir que Heredan los métodos y Atributos? Veámoslo en el código.

Video Ejemplo

Ejemplo de Herencia en Java


En el Código anterior podemos observar la palabra clave “extends” . Esta palabra nos sirve para indicar desde donde estamos heredando la funcionalidad. Este caso puede leerse como “Gerente extiende de empleado” o “Gerente hereda de empleado”. Siendo el mismo caso para Vendedor.
También podemos observar que el modificador en el caso de Empleado es protected. El cual es el apropiado para el acceso desde hijo. Y hemos implementado el método getCalculaSueldoMensual() simulando el descuento de los impuestos.

Veamos ahora su funcionamiento:

La salida seria la siguiente:

Sueldo neto: $750.0
Sueldo neto: $750.0

Ahora al crear un objeto de Gerente y de Vendedor tenemos acceso a todos los atributos y métodos de la clase Empleado.
Puedes notar un pequeño problema en el código anterior. El Tipo Vendedor tiene un ingreso extra que no se considero en el calcularSueldoMensual(). Para esto existe en Java sobreescritura de métodos.

Herencia y sobrescritura de métodos.

Existen ocasiones en la herencia en las que si bien necesitamos la misma respuesta (en este caso el sueldo final mensual) la manera de obtenerlo puede variar en cada tipo de Objeto. Para este caso la sobreescritura de métodos de la herencia en Java nos ayudara a resolverlo.

Para sobrescribir un método debemos en la clase hijo crear un método con el mismo nombre y parámetros de entrada deben ser los mismos del método padre.
Nuestra clase podría crear la de la siguiente manera:

Puedes notar la anotación override que nos sirve para identificar un método sobrescrito. No es obligatorio pero una buena practica escribirlo como ayuda en la documentación del código.
No es necesario cambiar nada del método Main para obtener ahora la respuesta correcta.

Salida:

Sueldo neto: $750.0
Sueldo neto: $1275.0

Prueba tus conocimientos

42
Created on By eduesqui

Herencia en Java QUIZ

1 / 3

¿Cuál de los siguientes no es un requisito para sobreescribir un método de una clase padre?

2 / 3

¿Con qué palabra reservada se indica que una clase hereda de otra?

3 / 3

¿Qué es la herencia en Java?

Your score is

The average score is 71%

0%

Conclusión

Ahora conoces el concepto de herencia en Java. Eres capaz de abstraer clases de una mejor manera, evitando la duplicidad de código. También sabes como sobrescribir un método para poder darle la funcionalidad especial necesaria.

0 Shares:
You May Also Like