Une interface déclare un contrat — un ensemble de méthodes qu'un type doit fournir — avec peu ou pas d'implémentation. Une classe abstraite est une classe partiellement implémentée qui peut contenir un état partagé et des méthodes concrètes mais ne peut pas être instanciée. La distinction clé : une classe peut implémenter plusieurs interfaces mais hériter d'une seule classe.
