Sobes.tech
Junior — Middle

¿Cuál es la principal diferencia entre una clase abstracta y una interfaz en programación orientada a objetos?

sobes.tech AI

Respuesta de la IA

La principal diferencia entre una clase abstracta y una interfaz es que la clase abstracta puede contener implementaciones de métodos y estado (campos), mientras que la interfaz solo define las firmas de los métodos sin implementación (hasta C# 8.0). La clase abstracta se usa cuando se necesita establecer una implementación base y funcionalidad común para los herederos, y la interfaz para definir un contrato que las clases deben cumplir, independientemente de su jerarquía.

Ejemplo:

// Clase abstracta
public abstract class Animal {
    public void Eat() {
        Console.WriteLine("Comiendo");
    }
    public abstract void MakeSound();
}

// Interfaz
public interface IMovable {
    void Move();
}

// Clase que hereda de la clase abstracta e implementa la interfaz
public class Dog : Animal, IMovable {
    public override void MakeSound() {
        Console.WriteLine("Ladrido");
    }
    public void Move() {
        Console.WriteLine("Correr");
    }
}