En Java, el propósito de una interface no es lograr heréncia múltiple (que no la logra), sino generar tipos de datos.
Si quiero reutilizar mi código y decir que mi clase A es un caso particular de la clase B, entonces uso herencia (siendo la clase B abstracta o concreta, da igual).
Ahora bien, si quiero decir "este objeto de la clase A es polimórfico a este de la clase B, pero su comportamiento no es similar" (es decir, mismo qué pero independientes cómos), ahí uso una interface...
El único propósito es lograr que el compilador no chille.
Ahora bien, si quiero decir "este objeto de la clase A es polimórfico a este de la clase B, pero su comportamiento no es similar" (es decir, mismo qué pero independientes cómos), ahí uso una interface...
Si te refieres a que los objetos de A y B deben poder ser usados indistintamente en ciertos algoritmos polimórficos, entonces A y B deben implementar una misma interfaz C, por ejemplo, usada en los citados algoritmos. El problema está en que en tu párrafo anterior explicabas que una clase A derivaba de otra B, lo cual es muy distinto de que ambas deriven de otra.
Como decían por ahí, sólo hace falta usar herencia en vez de interfaces cuando realmente se necesite colocar en la clase base una parte del comportamiento común a todas las clases derivadas.
Re:Interfaces vs superclases abstractas
(Puntos:1)( http://enunacalesita.wordpress.com/ )
Si quiero reutilizar mi código y decir que mi clase A es un caso particular de la clase B, entonces uso herencia (siendo la clase B abstracta o concreta, da igual).
Ahora bien, si quiero decir "este objeto de la clase A es polimórfico a este de la clase B, pero su comportamiento no es similar" (es decir, mismo qué pero independientes cómos), ahí uso una interface...
El único propósito es lograr que el compilador no chille.
Re:Interfaces vs superclases abstractas
(Puntos:2)( http://guslibu.awardspace.com/ | Última bitácora: Viernes, 18 Marzo de 2011, 08:29h )
Como decían por ahí, sólo hace falta usar herencia en vez de interfaces cuando realmente se necesite colocar en la clase base una parte del comportamiento común a todas las clases derivadas.