interface o clase abstracta

Rafael Cedres
12 de Diciembre del 2004
Estoy empezando con el java, y tengo una duda:
Existe alguna regla para saber cuando utilizar una clase abstracta y cuando una interface ??

Lemony Snicket
12 de Diciembre del 2004
Una interfaz es una clase abstracta con todos sus métodos abstractos. Generalmente lo que se suele hacer es definir la interfaz con todos los métodos comunes, definir una clase abstracta que implementa la interfaz -esta clase será abstracta porque no implementará todos los métodos de la interfaz o porque definirá sus propios métodos abstractos- y finalmente definir una clase subclase de la clase abstracta que implemente los métodos abstractos definidos.

maramonar
12 de Diciembre del 2004
No se si existe tal regla...en varios libros sobre diseño siempre recomiendan "programar contra interfaces, no contra clases concretas"...las interfaces te definen comportamiento y las clases abstractas implementan parcialmente comportamiento común entre varias subclases...incluso que uses clases abstractas no te impide usar interfaces---de hecho es saludable...
en definitiva, pienso que deberíamos usar interfaces y en casos donde se justifique abstraer comportamiento común de varias clases que implementen esta interface en una clase abstracta...no se si queda más claro...je....