Sobes.tech
Junior — Middle

Quelles sont les différences entre une classe abstraite et une interface en programmation orientée objet?

sobes.tech IA

Réponse de l'IA

Une classe abstraite et une interface sont des mécanismes différents pour décrire des contrats et des comportements en programmation orientée objet, mais avec des différences clés:

  • Classe abstraite peut contenir des méthodes abstraites (sans implémentation) et des méthodes concrètes avec implémentation. Elle peut avoir un état (champs). Les classes héritent de la classe abstraite et peuvent redéfinir des méthodes.

  • Interface décrit uniquement un ensemble de méthodes sans implémentation et ne contient pas d'état. La classe qui implémente l'interface doit implémenter toutes ses méthodes.

Exemple de différences:

  • La classe abstraite est appropriée lorsque vous devez définir une implémentation de base et un état commun pour les héritiers.
  • L'interface est utilisée pour décrire des capacités qui peuvent être implémentées par différentes classes sans relation d'héritage.

Par exemple, l'interface Flyable peut décrire la méthode fly(), et la classe abstraite Bird peut contenir le champ wingSpan et la méthode sing() avec une implémentation.