Contenu

Une méthode virtuelle peut avoir un corps d'implémentation. Si la déclaration d'une méthode d'instance contient le modificateur virtual, la méthode est appelée méthode virtuelle. Une fois le modificateur virtual utilisé, aucun autre modificateur static, abstract ou override n'est autorisé.

Code de méthode virtuelle dans le modèle Simple Factory :

//Utilisé pour le résultat après calcul public virtual double GetResult() { double result = 0; return result; }

On peut voir que la classe possède une méthode GetResult(). La méthode GetResult() contient un modificateur virtual, ce qui indique que les classes dérivées de la classe de base peuvent redéfinir cette méthode. Le but de la méthode GetResult() : afficher l'instruction"This is a virtual method!"dans la console.

L'implémentation d'une méthode virtuelle peut être remplacée par une classe dérivée. Le processus consistant à remplacer l'implémentation d'une méthode virtuelle héritée est appelé redéfinition de cette méthode. Lors d'un appel de méthode virtuelle, le type à l'exécution de l'instance impliquée dans l'appel détermine l'implémentation de la méthode qui est réellement invoquée.

La différence entre les méthodes abstraites et les méthodes virtuelles

  • 1. Les méthodes virtuelles doivent avoir une partie d'implémentation ; les méthodes abstraites ne fournissent pas de partie d'implémentation. Une méthode abstraite est une méthode qui force les classes dérivées à la redéfinir ; sinon, la classe dérivée ne peut pas être instanciée.
  • 2. Les méthodes abstraites ne peuvent être déclarées que dans des classes abstraites ; les méthodes virtuelles, non. Si une classe contient une méthode abstraite, alors la classe est également abstraite, et elle doit aussi être déclarée comme abstraite.
  • 3. Les méthodes abstraites doivent être redéfinies dans les classes dérivées, ce qui est similaire aux interfaces. Les méthodes virtuelles n'ont pas besoin d'être redéfinies dans les classes dérivées.

En termes simples, les méthodes abstraites doivent être implémentées par les sous-classes. Les méthodes virtuelles sont déjà implémentées et peuvent être redéfinies par les sous-classes, ou ne pas l'être, selon les besoins.

Les méthodes abstraites comme les méthodes virtuelles peuvent être redéfinies par les classes dérivées.

Résumé

Dans l'ensemble, une méthode virtuelle est une méthode dont la déclaration contient le modificateur virtual. Pour l'instant, c'est la seule façon de la comprendre. Si j'acquiers une compréhension plus approfondie plus tard, j'en ajouterai davantage. Tout le monde est invité à partager sa compréhension.