Maison >développement back-end >C++ >Virtuel/Override vs New en C# : quand dois-je utiliser quel mot-clé pour le remplacement de méthode ?

Virtuel/Override vs New en C# : quand dois-je utiliser quel mot-clé pour le remplacement de méthode ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-27 06:36:09489parcourir

Virtual/Override vs. New in C#: When Should I Use Which Keyword for Method Overriding?

Virtual / Override et nouveaux mots clés dans le C #: Quand utiliser les mots clés pour réécrire la méthode?

Lors de la définition des méthodes dans la classe de base, les programmeurs sont souvent confrontés au problème de l'utilisation de mots clés "virtuels" ou "nouveaux". Cette décision affectera considérablement la réécriture de la loi chinoise dérivée.

Override virtuel

Le mot-clé "virtuel" dans la méthode de base indique qu'il peut être réécrit dans la classe dérivée. Pour réécrire cette méthode, la classe dérivée doit utiliser le mot clé "Override". Cela garantit que la méthode de réécriture fonctionne comme prévu pour maintenir la structure hiérarchique et le polymorphisme. Lorsque la méthode d'appel et de réécriture par la classe dérivée appelle, il exécutera la version de réécriture, même si la variable de référence de l'objet de maintien est la classe de base. Ceci est appelé post-liaison et permet un comportement dynamique.

nouveau mot-clé

Au contraire, le "nouveau" mot clé de la méthode dérivée déclare une nouvelle méthode qui masque la méthode d'héritage avec le même nom. Lors de l'utilisation, la nouvelle méthode remplace la méthode d'héritage dans la classe dérivée, détruisant ainsi le polymorphisme.

Lorsque la classe dérivée appelle la méthode de la "nouvelle" instruction, elle exécutera la nouvelle méthode, quelle que soit le type de variables de référence de l'objet de maintien. Ceci est considéré comme une liaison précoce et entrave le polymorphisme.

Exemple

Considérez l'exemple de code suivant:

Si vous allouez les exemples de la variable de base et appelez le Dosomething (), si vous utilisez Virtual / Override, le résultat sera faux, mais si vous l'utilisez, le résultat est vrai. Cela met en évidence la différence entre la liaison ultérieure et la liaison précoce.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn