La classe abstraite et l'interface sont toutes deux principalement utilisées pour l'abstraction, mais elles sont très différentes les unes des autres. Les deux font partie intégrante de Java mais ont leurs propres applications. Bien que les deux termes puissent être synonymes, ils ne peuvent pas être utilisés indifféremment..
Il existe des différences significatives entre les deux. Alors qu'une méthode d'interface est abstraite par défaut, un résumé peut contenir des méthodes abstraites et non abstraites. Eh bien, depuis Java 8, les interfaces ont également des implémentations de méthodes et peuvent avoir des méthodes statiques et par défaut en Java. Etudions la différence entre les deux en détail.
Une classe abstraite en Java est une classe déclarée abstraite - elle peut contenir ou non des méthodes abstraites. Il ressemble beaucoup à une interface Java, à la différence qu'il peut contenir une implémentation de méthode par défaut. Comme dans la programmation orientée objet, l'abstraction en Java est réalisée à l'aide de classes abstraites et d'interfaces. En Java, abstraction signifie masquer les détails non pertinents à l'utilisateur pour se concentrer uniquement sur les détails essentiels afin d'accroître l'efficacité et de réduire ainsi la complexité. Le mot clé «abstract» est utilisé pour créer une classe abstraite juste avant le mot clé class dans la déclaration de classe..
Une classe abstraite peut contenir ou non des méthodes d'abstraction (méthodes sans corps), mais si une classe a au moins une méthode d'abstraction, elle doit être déclarée abstraite. Toutefois, les méthodes non abstraites ne peuvent également être utilisées que dans une classe abstraite, mais uniquement pour implémenter un comportement par défaut. Les méthodes d'une classe abstraite peuvent avoir des modificateurs d'accès tels que privé, public, statique et protégé, en fonction du niveau de visibilité. Une classe abstraite ne peut pas être instanciée et ne fournit pas une abstraction de 100% en raison du fait qu'elle peut avoir une méthode concrète.
Une interface ressemble à une classe, mais ce n’est pas le cas. Comme Java ne prend pas en charge les héritages multiples, une interface est parfois idéale pour fournir une base à la hiérarchie de classes. Une interface est plutôt un modèle de classe qui est également utilisé pour obtenir une abstraction en Java. Il contient des méthodes abstraites et des constantes statiques. En termes simples, une interface est un ensemble de méthodes abstraites utilisées pour spécifier un comportement que la classe doit implémenter. Contrairement aux classes abstraites, une interface fournit une abstraction complète en Java. Il peut avoir à la fois des méthodes et des variables comme une classe. Cependant, les méthodes déclarées dans interface sont abstraites par défaut..
Classe abstraite | Interface |
Le mot-clé abstrait est utilisé pour créer une classe abstraite et peut être utilisé avec des méthodes.. | Le mot clé interface est utilisé pour créer une interface, mais il ne peut pas être utilisé avec des méthodes.. |
Une classe ne peut étendre qu'une classe abstraite. | Une classe peut implémenter plus d'une interface. |
Une classe abstraite peut avoir des méthodes abstraites et non abstraites. | Une interface ne peut avoir que des méthodes abstraites. |
Les variables ne sont pas finales par défaut. Il peut contenir des variables non finales. | Les variables sont finales par défaut dans une interface. |
Une classe abstraite peut fournir l'implémentation d'une interface. | Une interface ne peut pas fournir l'implémentation d'une classe abstraite. |
Il peut avoir des méthodes avec des implémentations. | Il fournit une abstraction absolue et ne peut pas implémenter de méthode.. |
Il peut avoir des modificateurs d'accès public, privé, statique et protégé. | Les méthodes sont implicitement publiques et abstraites en interface Java. |
Il ne supporte pas les héritages multiples. | Il supporte les héritages multiples. |
Idéal pour la réutilisation de code et la perspective d'évolution. | Idéal pour la déclaration de type. |
La classe abstraite et l'interface sont utilisées pour l'abstraction; Cependant, ils ont leur juste part de différences. La principale différence entre les deux réside dans les méthodes d'abstraction. Tandis que le premier peut avoir ou non des méthodes abstraites, le dernier est implicitement abstrait. Une classe abstraite peut avoir des méthodes abstraites et non abstraites. Une interface, par contre, ne peut avoir que des méthodes abstraites. Par conséquent, elle ne peut pas avoir d’implémentation, ce qui signifie simplement qu’une interface ne peut pas avoir de méthodes non abstraites. Une classe abstraite ne peut pas être instanciée, ce qui interdit la création d'un objet. Une interface, en revanche, peut ressembler à une classe, mais ce n’est pas.