Programmation/Programmation orientée objet/Classes abstraites et interfaces

Un livre de Wikilivres.

Classe abstraite[modifier | modifier le wikicode]

Une classe abstraite est une classe possédant des méthodes abstraites.

Une méthode abstraite ne possède pas d'implémentation, mais est utilisée par la classe elle-même ou une autre classe. Il n'est pas possible de créer et d'utiliser une instance directe d'une classe abstraite. Il faut utiliser une sous-classe qui implémente toutes les méthodes abstraites.

Interface[modifier | modifier le wikicode]

Une interface ne contient que des méthodes abstraites. Comme une classe abstraite, il n'est pas possible de créer et d'utiliser une instance directe d'une interface. Il faut utiliser une classe qui implémente cette interface, c'est à dire toutes les méthodes abstraites de celle-ci.

Différence[modifier | modifier le wikicode]

La différence entre classe abstraite et interface peut ne pas être évidente au premier abord.

Afin de bien concevoir un modèle objet, voici les principales différences :

  • Dans une classe abstraite, il est possible d'avoir des méthodes concrètes qui implémentent des fonctionnalités générales ou communes,
  • Dans certains langages de programmation où le nombre de classes mères d'une sous-classe est limité (Java, par exemple, n'autorise qu'une seule classe mère), l'implémentation d'une classe abstraite impose d'hériter de cette classe, alors qu'il est généralement possible d'implémenter plusieurs interfaces dans une classe.

Exemples[modifier | modifier le wikicode]