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");
}
}