Classe abstrait vs héritage
La classe et l'héritage abstraits sont deux concepts importants orientés objet trouvés 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 que l'héritage permet à de nouvelles classes d'étendre d'autres classes. La classe abstraite est une classe qui ne peut pas être initialisée mais peut être étendue. Ainsi, les classes abstraites ne sont significatives que si le langage de programmation prend en charge l'héritage. En Java, les classes abstraites sont déclarées en utilisant un mot-clé abstrait, tandis que le mot clé étend est utilisé pour hériter d'une classe (super).
Qu'est-ce que la 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 que l'héritage?
L'héritage est un concept orienté objet, qui permet à de nouvelles classes d'étendre d'autres classes. Étend que le mot clé est utilisé pour implémenter le concept d'hérédité dans le langage de programmation Java. L'héritage fournit essentiellement la réutilisation du code en permettant aux propriétés d'étendue et au comportement d'une classe existante par une classe nouvellement définie. Lorsqu'une nouvelle sous-classe (ou classe dérivée) étend une super classe (ou classe parent), la sous-classe héritera de tous les attributs et méthodes de la super classe. La sous-classe peut éventuellement remplacer le comportement (fournir des fonctionnalités nouvelles ou étendues aux méthodes) héritées de la classe parentale. En règle générale, une sous-classe ne peut pas prolonger plusieurs super classes (e.g. en java). Par conséquent, vous ne pouvez pas utiliser les étendues pour l'héritage multiple. Afin d'avoir un héritage multiple, vous devez utiliser des interfaces.
Quelle est la différence entre la classe abstraite et l'héritage?
Les classes abstraites représentent généralement un concept abstrait ou une entité avec une implémentation partielle ou non. L'héritage permet à de nouvelles classes d'étendre d'autres classes. Parce que, les classes abstraites ne peuvent pas être instanciées, vous devez utiliser le concept d'héritage pour utiliser les classes abstraites. Sinon, une classe abstraite n'a aucune utilité. Les classes abstraites peuvent contenir des méthodes abstraites et lorsque la classe est prolongée, toutes les méthodes (abstraites et béton) sont héréditaires. La classe héritée peut implémenter toutes ou toutes les méthodes. Si toutes les méthodes abstraites ne sont pas mises en œuvre, alors cette classe devient également une classe abstraite. Une classe ne peut pas hériter de plus d'une classe abstraite (ce n'est pas une qualité des classes abstraites en soi, mais plutôt une restriction de l'héritage).