Sobes.tech
Junior — Middle

¿Cuáles son las diferencias entre una clase abstracta y una interfaz en programación orientada a objetos?

sobes.tech AI

Respuesta de la IA

Una clase abstracta y una interfaz son mecanismos diferentes para describir contratos y comportamientos en la programación orientada a objetos, pero con diferencias clave:

  • Clase abstracta puede contener métodos abstractos (sin implementación) y métodos concretos con implementación. Puede tener estado (campos). Las clases heredan de la clase abstracta y pueden sobrescribir métodos.

  • Interfaz describe solo un conjunto de métodos sin implementación y no contiene estado. La clase que implementa la interfaz debe implementar todos sus métodos.

Ejemplo de diferencias:

  • La clase abstracta es adecuada cuando se necesita definir una implementación base y un estado común para los herederos.
  • La interfaz se usa para describir capacidades que pueden ser implementadas por diferentes clases sin relación de herencia.

Por ejemplo, la interfaz Flyable puede describir el método fly(), y la clase abstracta Bird puede contener el campo wingSpan y el método sing() con implementación.