Abstraction Class vs Interface
La classe et l'interface abstraites sont deux constructions orientées objet trouvées dans de nombreux langages de programmation orientés objet comme Java. La classe abstraite peut être considérée comme une version abstraite d'une classe régulière (concrète), tandis qu'une interface peut être considérée comme un moyen de mettre en œuvre un contrat. La classe abstraite est une classe qui ne peut pas être initialisée mais peut être étendue. L'interface est un type qui doit être implémenté par d'autres classes. En Java, les classes abstraites sont déclarées en utilisant un mot-clé abstrait, tandis que le mot-clé d'interface est utilisé pour définir une interface.
Qu'est-ce qu'une classe abstraite?
En règle générale, les classes abstraites, également appelées classes de base abstraites (ABC), ne peuvent pas être instanciées (une instance de cette classe ne peut pas être créée). Ainsi, les classes abstraites ne sont significatives que si le langage de programmation prend en charge l'héritage (capacité à créer des sous-classes à partir de l'extension d'une classe). Les classes abstraites représentent généralement un concept abstrait ou une entité avec une implémentation partielle ou non. Par conséquent, les classes abstraites agissent comme des classes de parents à partir desquelles les classes enfants sont dérivées afin que la classe d'enfants partagera les caractéristiques incomplètes de la classe des parents et des fonctionnalités peuvent être ajoutées pour le compléter.
Les classes abstraites peuvent contenir des méthodes abstraites. Les sous-classes prolongeant une classe abstraite peuvent implémenter ces méthodes abstraites (héréditaires). Si la classe d'enfants implémente toutes ces méthodes abstraites, c'est une classe concrète. Mais si ce n'est pas le cas, la classe d'enfants devient également une classe abstraite. Ce que tout cela signifie, c'est que lorsque le programmeur nomme une classe en tant que résumé, elle dit que la classe sera incomplète et qu'il aura des éléments qui doivent être complétés par les sous-classes héritées. C'est une belle façon de créer un contrat entre deux programmeurs, ce qui simplifie les tâches dans le développement de logiciels. Le programmeur, qui écrit du code pour hériter, doit suivre exactement les définitions de la méthode (mais bien sûr peut avoir sa propre implémentation).
Qu'est-ce qu'une interface?
Une interface est un type abstrait utilisé pour spécifier un contrat qui doit être mis en œuvre par les classes, qui implémentent cette interface. Le mot-clé d'interface est utilisé pour définir une interface et implémente le mot-clé est utilisé pour implémenter une interface par une classe (dans le langage de programmation Java). Habituellement, une interface ne contiendra que des signatures de méthode et des déclarations constantes. Toute interface qui implémente une interface particulière doit implémenter toutes les méthodes définies dans l'interface, ou doit être déclarée comme une classe abstraite. En Java, le type de référence d'objet peut être défini comme un type d'interface. Mais cet objet doit être nul ou doit maintenir un objet d'une classe, qui implémente cette interface particulière. En utilisant des outils de mots clés en java, vous pouvez implémenter plusieurs interfaces à une seule classe.
Quelle est la différence entre la classe abstraite et l'interface?
Les classes abstraites représentent généralement un concept abstrait ou une entité avec une implémentation partielle ou non. D'un autre côté, une interface est un type abstrait qui est utilisé pour spécifier un contrat qui devrait être mis en œuvre par les classes. Les classes abstraites doivent être héritées (ou étendues), tandis que les interfaces doivent être mises en œuvre. Les classes abstraites peuvent contenir des méthodes abstraites, tandis qu'une interface ne doit contenir que des méthodes abstraites. Les classes abstraites peuvent contenir des variables, mais les interfaces ne peuvent définir que les constantes. Une classe ne peut pas hériter de plus d'une classe abstraite mais peut implémenter plusieurs interfaces. Une interface ne peut pas implémenter une autre interface. Cependant une interface peut prolonger une classe.