Table des matières
Bien que les deux structures puissent sembler similaires car elles forcent les classes qui les utilisent à créer les méthodes qu'elles possèdent et à les utiliser pour qu'elles soient valides, elles présentent des différences clés entre elles, ce qui peut nous éclairer davantage sur la façon dont nous pouvons les utiliser. .Les différences, bien qu'elles soient subtiles, nous permettent d'utiliser les deux structures même en combinaison, de cette manière nous pouvons obtenir un plus grand ordre dans notre projet et créer des applications qui nous permettent de mieux reproduire les objets du monde réel dans un format numérique.
RestrictionsLa principale différence que nous voyons entre cours abstraits et interfaces est que le premier est une classe et le second ne l'est pas, même si le interface a une structure similaire fait face à des restrictions qui ne se trouvent pas dans un classe abstraite.
VariablesLa classe abstraite n'a aucune restriction sur l'utilisation des variables, cependant le interface si c'est le cas, en fait toutes les variables que nous allons utiliser doivent être public, statique ou final.
Dans ce cas le constructeur de la classe abstraite doit être invoqué via des sous-classes, ce qui laisse de côté la possibilité de l'instancier via l'opérateur Nouveau.
Dans le cas d interface, cela ne peut pas avoir de constructeur car ce n'est pas une classe, ce qui nous fait également écarter la création d'instances avec l'opérateur Nouveau.
MéthodesDans une interface les méthodes doivent être résumé public D'un autre côté, dans la classe abstraite, nous pouvons placer n'importe quel type de méthode sans problème, ce qui fait une différence de plus pour nous.
Un autre point que nous devons prendre en compte est la manière de faire l'héritage et l'implémentation que nous pouvons réaliser avec ces deux structures dans Java, nous savons que lorsque nous faisons patrimoine Dans une classe, on ne peut hériter directement que d'une classe supérieure, c'est-à-dire que si on veut hériter de deux classes différentes, il faut créer comme un effet de cascade, où une première classe hérite de la classe supérieure puis une autre classe hérite de ceci pour obtenir sa fonctionnalité et celle de sa classe parent.
Dans interfaces Ce problème ne se produit pas, en fait nous pouvons hériter directement de plusieurs interfaces, donc si nous voulons obtenir leurs méthodes nous pouvons le faire sans problème.