Maison >développement back-end >C++ >C # Méthode Overriding: Virtual / Override vs New - Quelle est la différence?
En programmation orientée objet, la substitution de méthode permet à une classe dérivée de fournir sa propre implémentation de méthodes héritées d'une classe de base. C# propose deux manières distinctes de remplacer des méthodes : les mots-clés « virtual » et « override », ou simplement déclarer une nouvelle méthode avec la même signature.
Lorsqu'une méthode est déclarée comme "virtuelle" dans la classe de base, elle peut être remplacée dans la classe dérivée à l'aide du mot-clé "override". Cette approche permet à une classe dérivée de fournir sa propre implémentation tout en conservant la signature de méthode d'origine. Au moment de l'exécution, lorsque l'objet est d'un type dérivé, la méthode remplacée sera appelée même si la variable de référence contenant l'objet est du type de base.
Alternativement, une méthode peut être remplacée dans une classe dérivée en déclarant une nouvelle méthode avec la même signature et en la marquant comme "nouvelle". Cette méthode remplace complètement l'implémentation dans la classe de base et la méthode substituée est appelée quel que soit le type de l'objet d'exécution.
Pour illustrer la différence, considérons l'extrait de code suivant :
<code class="language-csharp">public class Foo { public virtual bool DoSomething() { return false; } } public class Bar : Foo { public override bool DoSomething() { return true; } }</code>
Si on appelle le code comme suit :
<code class="language-csharp">Foo a = new Bar(); a.DoSomething();</code>
Les résultats varieront selon la méthode utilisée pour la réécriture :
En résumé, les principales différences entre « virtuel » « override » et « nouveau » pour le remplacement de méthode sont :
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!