Caso práctico
María y Juan continúan con su tarea de desarrollo de clases para el proyecto de la Clínica Veterinaria. Ya han utilizado la herencia en diversas ocasiones e incluso han escrito alguna clase abstracta para luego generar clases especializadas basadas en ella.
Pero ahora se les ha planteado un nuevo problema: tienen pensadas algunas clases entre las que no existe ninguna relación de herencia, cada una hereda de unos ancestros diferentes que no tienen nada que ver, pero, sin embargo, sí podrían compartir una buena parte de sus comportamientos (métodos). No es posible hacer que las dos hereden de la misma clase base porque hemos dicho que no se parecen en nada a ese respecto (cada una tiene su clase base, sin relación entre ellas), y tampoco pueden heredar de una nueva clase abstracta que contenga la interfaz de ese comportamiento, pues la herencia múltiple no está permitida en Java:
- "¿Qué hacemos entonces?, ¿repetimos la misma interfaz en las dos jerarquías de clases? No me cuadra tener que hacer eso...". - Le pregunta María a Juan.
- "A mí tampoco. No me suena muy bien". - Le contesta Juan.
- "Así es. Tiene que haber una solución más elegante que no nos haga tener que repetir ese código una y otra vez. ¿Alguna idea?".
- "Quizá exista una forma de resolver el problema. ¿Recuerdas que Ada nos habló el otro día de las interfaces?".