La Herencia en Java. Curso de Java

Para entender que és la herencia en java la mejor forma es razonarlo desde el punto de vista de los objetos creados.

Cada objeto creado de una Clase determinada tiene el estado y comportamiento de esa Clase en particular. En ocasiones nos puede interesar crear distintos objetos con sus comportamientos específicos,  que tengan comportamientos  comunes a otros objetos. En este sentido entra en juego la herencia entre Clases de Java. Por ejemplo si nos fijamos en un vehículo a motor (un coche), distinguimos partes comunes a otros coches. Como pueden ser el «numero de ruedas», «el volante», «cambio de marchas», etc. Factores que son comunes en cada «objeto coche» que se fabrica.

Sin embargo especificando en cada objeto coche en particular, hay variaciones en sus características de fabricación. Estas pueden ser, si es  «Turismo o deportivo», «cilindrada», «la forma», que son atributos  de cada tipo de objeto coche. Esto se puede ver mejor en la siguiente representación:

Ejemplo de herencia en Java entre Clases.

En este diagrama de clases de uml vemos una representación del concepto de herencia en Java . La Clase madre o Superclase ClaseCoche con sus atributos y dos Clases que heredan de ella. La Clase ClaseTurismo y la Clase ClaseDeportivo.

Ambas Clases tienen los atributos y métodos (si los hubiera) de la Clase ClaseCoche. Aparte cada una de estas clases hijas aporta los atributos y métodos que tengan. Si instanciamos un objeto de la clase «ClaseTurismo» , accederiamos a «isFamiliar» y al resto de miembros  de la SuperClase.

En  Java, a cada clase se le permite tener una Superclase , en cambio una superclase puede tener infinitas subclases.

¿Como hacer que una Clase herede de otra?

Para crear una subclase hay que utilizar la palabra reservada extends en la cabecera de la clase que hereda de la siguiente manera:


En el lenguaje Java existe una jerarquia de Clases y encabezando está la clase Object,. A partir de ella se crea una estructura de niveles de herencias.

Una subclase hereda todos los miembros de la superclase a excepción de los métodos constructores, sin embargo puede accederse a ellos utilizando una invocación al mismo con la palabra reservada super, de la siguiente manera:

Ejemplo de uso de «super» en la herencia de Clases.

Primeramente creamos una clase cualquiera, en este caso la llamaremos por ejemplo CCoche

A continuación declaramos la clase CDeportivo que hereda de CCoche:

Finalmente en la clase principal donde esta el método main creamos los objetos y lá logica del programa:

Si ejecutamos este programa obtendremos en consola el siguiente resultado:

Aclaraciones:

  • Primero: Creamos un objeto de cada clase «objCoche» y «objDeportivo» llamando al constructor  respectivo. Y pasamos como parámetro el valor de «color».
  • Segundo: Desde «objCoche» invocamos el método «estaDisponible» de la clase «CCoche».
  • Tercero: Desde «objDep» invocamos el método «estaDisponible» de la clase «CDeportivo». Este muestra primeramente un mensaje en consola y después llama al método «estaDisponible» de la «Superclase» CCoche. Pero si nos damos cuenta el atributo «color» ha variado de «azul»,  a «verde». Esto se debe a la llamada que se hace al constructor al crear objDep y pasar el parametro «color=verde».
  • Cuarto: Se le asigna un nuevo valor al atributo «color» de la clase CDeportivo llamando a su método «setColor». Como vemos en consola solamente aplicariamos el cambio al atributo miembro de su misma clase y no a la Superclase.

Conclusiones sobre la herencia en Java.

  • Una subclase hereda  los miembros públicos y protegidos de la «Superclase» si  está en el mismo paquete.
  • Los miembros privados solamente se heredan si están en mismo paquete.
  • Pueden utilizarse mismo nombre para designar miembros tanto en la «superclase» como la subclase, esto responde al concepto de ocultación de miembros de la superclase.
  • Se pueden crear tantos atributos o métodos en la subclase como consideremos oportuno y a su vez poder utilizar todos los miembros de la «Superclase».
  • Tal y como hemos visto en el programa de ejemplo anterior, podemos invocar al constructor o a cualquier método de la «Superclase» utilizando la palabra reservada «super», con la salvedad de que si invocamos al constructor de la Superclase desde el constructor de la subclase la llamada con «super» necesariamente debe estar situada en la primera linea del método constructor de la subclase.
¿Te ha gustado? Compártelo.

Añadir un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

  Acepto la política de privacidad

Información sobre protección de datos

  • Responsable: MIGUEL ANGEL SANZ
  • Fin del tratamiento: Moderar los comentarios. Responder las consultas
  • Legitimación: Tu consentimiento
  • Destinatarios 1&1 Internet España S.L.U. Politica de privacidad. https://www.ionos.es/terms-gtc//terms-privacy/.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información adicional: Más información en nuestra política de privacidad.