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 classlors de la déclaration d'une classe abstraite etinterfacelors de la déclaration d'une interface ; - Mot-clé d'héritage :
extendspour hériter d'une classe abstraite, etimplementspour hériter d'une interface ; - Noms pour les sous-classes : Une sous-classe d'une
abstract classest appelée sous-classe ou classe héritée, tandis qu'une sous-classe d'uneinterfaceest 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 classpeut 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
publicest 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 !
Demandez à l'IA
Demandez à l'IA
Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion
Posez-moi des questions sur ce sujet
Résumer ce chapitre
Afficher des exemples du monde réel
Awesome!
Completion rate improved to 4.76
Classe Abstraite vs Interface
Glissez pour afficher le menu
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 classlors de la déclaration d'une classe abstraite etinterfacelors de la déclaration d'une interface ; - Mot-clé d'héritage :
extendspour hériter d'une classe abstraite, etimplementspour hériter d'une interface ; - Noms pour les sous-classes : Une sous-classe d'une
abstract classest appelée sous-classe ou classe héritée, tandis qu'une sous-classe d'uneinterfaceest 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 classpeut 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
publicest 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 !