Interface: te obliga a implementar todos los métodos.
Herencia: A veces no necesitamos crear instancias de una clase padre, porque es muy genérica.
Clases Abstractas: Combinación entre Interface y Herencia , no implementa todos los métodos, por su composición no es necesario instanciarlo, no se pueden crear instancias de una clase abstracta.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?