Classe abstraite vs interface
La classe abstraite et l'interface 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 à l'aide du mot-clé Abstract, tandis que le mot-clé 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 n'ont de signification que si le langage de programmation prend en charge l'héritage (possibilité de créer des sous-classes à partir d'une extension de classe). Les classes abstraites représentent généralement un concept abstrait ou une entité avec une implémentation partielle ou nulle. Par conséquent, les classes abstraites agissent comme des classes parent desquelles les classes enfant sont dérivées, de sorte que la classe enfant partage les caractéristiques incomplètes de la classe parent et que des fonctionnalités puissent être ajoutées pour les compléter.
Les classes abstraites peuvent contenir des méthodes abstraites. Les sous-classes étendant une classe abstraite peuvent implémenter ces méthodes abstraites (héritées). Si la classe enfant implémente toutes ces méthodes abstraites, il s'agit d'une classe concrète. Mais si ce n'est pas le cas, la classe enfant devient également une classe abstraite. Cela signifie simplement que lorsque le programmeur désigne une classe en tant qu'abstrait, elle dit que la classe sera incomplète et qu'elle comportera des éléments devant être complétés par les sous-classes héritées. C'est un bon moyen de créer un contrat entre deux programmeurs, ce qui simplifie les tâches de développement logiciel. Le programmeur, qui écrit le code à hériter, doit suivre exactement les définitions de la méthode (mais peut bien sûr avoir sa propre implémentation).
Qu'est-ce qu'une interface??
Une interface est un type abstrait utilisé pour spécifier un contrat devant être implémenté par des classes implémentant cette interface. Le mot clé interface est utilisé pour définir une interface et le mot clé Implements est utilisé pour implémenter une interface par une classe (en langage de programmation Java). Généralement, une interface ne contiendra que des signatures de méthodes et des déclarations de constante. 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 en tant que classe abstraite. En Java, le type d'une référence d'objet peut être défini en tant que type d'interface. Mais cet objet doit être soit nul, soit contenir un objet d'une classe, qui implémente cette interface particulière. En utilisant le mot-clé Implements en Java, vous pouvez implémenter plusieurs interfaces dans une même classe..
Quelle est la différence entre Abstract Class et Interface?
Les classes abstraites représentent généralement un concept abstrait ou une entité avec une implémentation partielle ou nulle. D'autre part, une interface est un type abstrait utilisé pour spécifier un contrat devant être implémenté par des classes. Les classes abstraites doivent être héritées (ou étendues), tandis que les interfaces doivent être implémentées. Les classes abstraites peuvent contenir des méthodes abstraites, alors qu'une interface ne doit contenir que des méthodes abstraites. Les classes abstraites peuvent contenir toutes les variables, mais les interfaces ne peuvent définir que des 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 étendre une classe.