Contenu du cours
Java POO
Java POO
Classe Abstraite vs Interface
Lequel choisir ?
D'après les chapitres précédents, vous avez peut-être remarqué que les abstract classes
et les interfaces
sont assez similaires. Cependant, il existe des différences entre elles. Pour aller droit au but, on peut dire qu'en pratique, les interfaces sont souvent privilégiées par rapport aux classes abstraites. Mais comprenons pourquoi c'est le cas.
Quelle est la différence ?
Pour commencer, il est nécessaire de comprendre les différences entre une classe abstraite et une interface. Passons en revue la liste :
Syntaxe :
abstract class
lors de la déclaration d'une classe abstraite etinterface
lors de la déclaration d'une interface ;Mot-clé d'héritage :
extends
pour hériter d'une classe abstraite, etimplements
pour hériter d'une interface ;Noms pour les sous-classes : Une sous-classe d'une
abstract class
est appelée sous-classe ou classe héritée, tandis qu'une sous-classe d'uneinterface
est appelée classe - implémentation ;Nombre d'héritages : Vous pouvez hériter d'une seule classe abstraite, alors que vous pouvez hériter de plusieurs interfaces ;
Une
abstract class
peut contenir à la fois des méthodes implémentées et des méthodes abstraites. À partir de Java 8, les interfaces peuvent également avoir des méthodesdefault
, que nous aborderons plus loin dans cette section ;Les méthodes dans une classe abstraite peuvent avoir n'importe quel modificateur d'accès, tandis que dans les interfaces, seul le modificateur d'accès
public
est autorisé.
Note
Il est également possible d'hériter simultanément d'une classe abstraite et d'implémenter une interface. On utilise d'abord le mot-clé
extends
, puisimplements
. La syntaxe est la suivante :class ClassName extends AbstractClass implements Interface {}
En termes simples, considérez une classe abstraite comme une classe qui fournit certaines fonctionnalités et impose certaines règles mais laisse certaines parties à compléter par ses sous-classes. Une interface, en revanche, s'apparente à une liste de contrôle qu'une classe doit respecter, spécifiant quelles méthodes elle doit posséder, sans fournir de code réel.
Merci pour vos commentaires !