Différences entre la classe abstraite et l'interface en Java Différence entre

Anonim

Résumé Class vs Interface en Java

Pour comprendre les différences entre la classe abstraite et l'interface Java, il est important de comprendre chacun d'entre eux de manière indépendante. La classe abstraite en Java est utilisée dans la déclaration des sous-classes avec un ensemble de caractéristiques communes. L'usage courant de la classe abstraite est une super classe d'autres classes qui, en effet, lui permet d'étendre la classe abstraite. Un mot-clé abstrait est utilisé dans la déclaration d'une classe abstraite. Tout comme n'importe quelle autre classe, la classe abstraite possède des champs qui décrivent les méthodes et les caractéristiques que la classe peut effectuer. Par la simple déclaration d'une classe abstraite, la classe ne peut être initiée

Une interface Java peut être assimilée à un protocole. Il représente un comportement prédéfini et convenu qui permet la facilitation de l'interaction d'objets indépendants. Selon l'utilisateur, l'interface détient la clé des différentes actions en cours d'implémentation. L'interface sert donc de lien entre le producteur et le consommateur. Les interfaces en Java sont donc un groupe de méthodes contenant des corps vides pouvant avoir des déclarations constantes. En exposant une classe à l'interface Java, cela signifie que le comportement attendu de la classe est l'implémentation de toutes les méthodes de l'interface.

Différences

Tout d'abord, une classe abstraite permet des champs qui ne sont pas statiques ou définitifs par opposition aux champs statiques et finaux utilisés dans les interfaces. Les interfaces ne peuvent avoir aucun code de mise en œuvre utilisé, et il peut y avoir un code de mise en œuvre utilisé dans la classe abstraite. Les codes d'implémentation déployés dans la classe abstraite peuvent contenir quelques-unes ou toutes les méthodes implémentées. Par défaut, toutes les méthodes de l'interface sont "abstract". "

La visibilité est également possible pour les méthodes ou les membres d'une classe abstraite qui peuvent varier tels que public, protected, private ou none. D'autre part, la visibilité de l'interface ne peut être prédéfinie que sur un mode de visibilité "public". '"

Une classe abstraite héritera automatiquement de la classe d'objet. Cela signifie en fait que des méthodes telles que clone () et equals () sont incluses. Dans une interface, aucun héritage de la classe d'objet n'est possible. Suite à cela, la classe abstraite a la capacité d'avoir un constructeur, mais une interface ne peut pas en avoir.

L'interface en Java a aussi une fonction très importante avec l'implémentation de plusieurs héritages car une classe ne peut avoir qu'une super classe. Bien qu'une seule super classe puisse être présente, elle peut être implémentée dans n'importe quel nombre d'interfaces. Il n'est pas possible d'avoir plusieurs héritages dans une classe abstraite.

En performance, les interfaces tendent à être plus lentes en implémentation par opposition à la classe abstraite, principalement en raison de la direction supplémentaire de trouver la méthode correspondante dans une classe. La différence est cependant devenue plus lente en raison des machines virtuelles Java modernes qui sont continuellement mises à jour.

L'ajout d'une méthode dans une interface nécessite de suivre toutes les classes d'implémentation qui implémentent l'interface spécifique. Alternativement, vous pouvez étendre l'interface afin de lui permettre d'avoir des méthodes supplémentaires. Si vous traitez avec une classe abstraite, tout ce qui est nécessaire est d'ajouter l'implémentation par défaut de la méthode et le code continue de fonctionner. Dans la mesure où des différences existent entre les classes abstraites et les interfaces, il est important de noter qu'elles ne sont pas des rivales, mais les différences mentionnées ici servent à se compléter mutuellement.

Résumé

  1. Les champs de classe abstraits ne sont pas statiques ni définitifs, contrairement à l'interface qui a des tables statiques et finales.

  2. Aucun code d'implémentation ne peut être utilisé dans les interfaces alors qu'il peut être utilisé en classe abstraite.

  3. La visibilité de l'interface peut uniquement être publique tandis que la visibilité de la classe abstraite peut varier.

  4. Une classe abstraite héritera automatiquement de la classe d'objet, mais ce n'est pas possible dans l'interface.

  5. La classe abstraite est plus rapide que l'interface en implémentation.