Utilisation de mots-clés virtuels et nouveaux en C#
Dans la programmation orientée objet, les méthodes sont généralement définies dans les classes de base et remplacées ou redéfinies dans les classes dérivées. Bien que les mots-clés « virtual » et « new » puissent être utilisés pour modifier les déclarations de méthodes, ils sont implémentés de différentes manières.
réécriture virtuelle
nouveau mot clé
Exemple
Considérez le code suivant :
<code class="language-csharp">public class Base { public virtual bool DoSomething() { return false; } } public class Derived : Base { public override bool DoSomething() { return true; } }</code>
Si nous créons une instance de Derived et la stockons dans une variable de type Base, l'appel à DoSomething() appellera la méthode remplacée dans Derived :
<code class="language-csharp">Base a = new Derived(); a.DoSomething(); // 返回 true</code>
En revanche, si on utilise le mot-clé new dans Derived, l'appel à DoSomething() invoquera la nouvelle méthode dans Derived, même si la variable est de type Base :
<code class="language-csharp">public class Derived : Base { public new bool DoSomething() { return true; } }</code>
<code class="language-csharp">Base a = new Derived(); a.DoSomething(); // 返回 true (Derived 中的新方法)</code>
Quand utiliser le remplacement virtuel par rapport au nouveau
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!