Sobes.tech
Junior — Middle

Quelle est la principale différence entre une classe abstraite et une interface en programmation orientée objet?

sobes.tech IA

Réponse de l'IA

La principale différence entre une classe abstraite et une interface est qu'une classe abstraite peut contenir des implémentations de méthodes et un état (champs), tandis qu'une interface ne définit que les signatures de méthodes sans implémentation (jusqu'à C# 8.0). La classe abstraite est utilisée lorsque vous souhaitez définir une implémentation de base et une fonctionnalité commune pour les héritiers, tandis que l'interface sert à définir un contrat que les classes doivent respecter, indépendamment de leur hiérarchie.

Exemple:

// Classe abstraite
public abstract class Animal {
    public void Eat() {
        Console.WriteLine("Manger");
    }
    public abstract void MakeSound();
}

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

// Classe héritant d'une classe abstraite et implémentant une interface
public class Dog : Animal, IMovable {
    public override void MakeSound() {
        Console.WriteLine("Aboiement");
    }
    public void Move() {
        Console.WriteLine("Courir");
    }
}