Différence Entre Virtuel Et Abstrait

Différence Entre Virtuel Et Abstrait
Différence Entre Virtuel Et Abstrait

Vidéo: Différence Entre Virtuel Et Abstrait

Vidéo: Différence Entre Virtuel Et Abstrait
Vidéo: Classes et méthodes abstraites 2024, Novembre
Anonim

Virtuel vs abstrait

Virtual et Abstract sont deux mots-clés utilisés dans la plupart des langages de programmation orientés objet (OO) tels que Java et C #. Bien qu'il y ait de légères différences dans ce que cela signifie dans différentes langues, les mots-clés virtuels et abstraits donnent une impression d'implémentation partielle aux entités auxquelles il s'attache.

Abstrait

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 sens que si le langage de programmation prend en charge l'héritage (possibilité de 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 nulle. Par conséquent, les classes abstraites agissent comme des classes parentes à partir desquelles les classes enfants sont dérivées, de sorte que la classe enfant partage les fonctionnalités incomplètes de la classe parente et que des fonctionnalités peuvent ê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. Tout cela signifie que, lorsque le programmeur nomme une classe en tant qu'abstrait, il dit que la classe sera incomplète et qu'elle 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 de développement logiciel. Le programmeur, qui écrit du code pour hériter, doit suivre exactement les définitions de méthode (mais bien sûr peut avoir sa propre implémentation). En Java et C #, les classes et méthodes abstraites sont déclarées à l'aide du mot clé Abstract. C'est une belle façon de créer un contrat entre deux programmeurs, ce qui simplifie les tâches de développement logiciel. Le programmeur, qui écrit du code pour hériter, doit suivre exactement les définitions de méthode (mais bien sûr peut avoir sa propre implémentation). En Java et C #, les classes et méthodes abstraites sont déclarées à l'aide du mot clé Abstract. C'est une belle façon de créer un contrat entre deux programmeurs, ce qui simplifie les tâches de développement logiciel. Le programmeur, qui écrit du code pour hériter, doit suivre exactement les définitions de méthode (mais bien sûr peut avoir sa propre implémentation). En Java et C #, les classes et méthodes abstraites sont déclarées à l'aide du mot clé Abstract.

Virtuel

Les méthodes / fonctions virtuelles offrent la possibilité de remplacer facultativement son comportement par une classe héritière (en utilisant une fonction avec la même signature). Le concept de fonction virtuelle est important dans le scénario suivant. Supposons qu'une classe est dérivée par une classe enfant, puis chaque fois qu'un objet de la classe dérivée est utilisé, il peut faire référence à un objet de la classe de base ou de la classe dérivée. Cependant, le comportement des appels de méthode peut être ambigu si les méthodes de la classe de base sont remplacées. Ainsi, afin de résoudre cette ambiguïté, le mot clé virtuel est utilisé. Si la méthode est marquée Virtual, alors la fonction de la classe dérivée est appelée (le cas échéant) ou bien la fonction de la classe de base est appelée. Par exemple, en C ++, le mot clé Virtual est utilisé exactement à cette fin. En C #, le mot clé Virtual est utilisé de manière similaire, mais en plus,le remplacement de mot-clé doit être utilisé pour modifier toutes les méthodes remplacées. Mais en Java, il n'y a pas de mot clé virtuel explicite. Toutes les méthodes non statiques sont considérées comme virtuelles. Les fonctions virtuelles sans corps sont appelées fonctions Pure Virtual. En Java et C #, les méthodes abstraites sont en fait Pure Virtual.

Différence entre virtuel et abstrait

Bien que Abstrait et Virtuel soient deux mots-clés / concepts qui donnent le sens d'une implémentation incomplète à ses entités associées, ils ont leurs différences. Les méthodes abstraites (qui doivent être définies à l'intérieur des classes abstraites) n'ont pas du tout d'implémentation, alors que les méthodes virtuelles peuvent avoir une implémentation. Si les méthodes abstraites sont étendues par une classe concrète, toutes les méthodes abstraites héritées doivent être implémentées, tandis que les méthodes virtuelles héritées peuvent ou non être remplacées.

Recommandé: