Diferencia entre Interface y Herencia

Desde que iniciamos nuestro camino en el mundo Java escuchamos decir que la herencia múltiple no está permitida, pero que para salvar este problema existen las interfaces. Entonces ¿podemos decir que las interfaces son un tipo de herencia?, ¿Ambos conceptos modelan el mismo aspecto del mundo real?... así como este par de preguntas, pueden surgir muchas más sin embargo la respuesta es sencilla y se la voy a mostrar con un sencillo ejemplo.
La herencia es un mecanismo utilizado para crear clases a partir de clases existentes y modelar comportamientos comunes, siguiendo un esquema jerárquico. Por ejemplo de la superclase Mamífero pueden extender clases como Perro, Gato y Ratón, tal como se muestra en la figura 1.

Figura 1. La herencia crea clases a partir de clases existentes.
 Por otro lado, las interfaces representan un concepto mediante el cual se puede asociar comportamientos comunes a dos clases totalmente distintas. La figura 2 ilustra mejor este concepto.
Figura 2. Las interfaces no siempre se basan en un árbol de jerarquía.
Como podemos ver, una llanta y una pelota no comparten ninguna relación de herencia pero al poseer cierto comportamiento en común (rebotar), pueden implementar una misma interfaz.

Entonces como conclusión podemos decir que Interfaz no significa herencia pues como hemos visto dos clases sin ningún esquema jerárquico en común pueden compartir una misma interfaz. Espero que esta explicación haya sido clara. Me despido hasta una próxima oportunidad.

Saludos.

Comentarios