Middle
¿En qué se diferencia una clase abstracta de una interfaz?
sobes.tech AI
Respuesta de la IA
Clase abstracta — es una clase que puede contener métodos implementados y métodos abstractos (sin implementación). Sirve como base para la herencia y puede contener estado (campos).
Interfaz — es un contrato que define un conjunto de métodos sin implementación (en el sentido clásico). La clase que implementa la interfaz debe implementar todos sus métodos.
Diferencias principales:
- La clase abstracta puede contener implementación y estado, la interfaz solo firmas de métodos (en algunos lenguajes, las interfaces pueden contener métodos por defecto).
- Una clase solo puede heredar de una clase abstracta, pero puede implementar varias interfaces.
- La clase abstracta proporciona una implementación parcial, la interfaz solo el contrato.
Ejemplo en Java:
abstract class Animal {
void eat() { System.out.println("Comiendo"); }
abstract void sound();
}
interface Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
void sound() { System.out.println("Cantar"); }
public void fly() { System.out.println("Volando"); }
}