Maison >développement back-end >C++ >Quelle est la différence entre les mots clés «nouveaux» et «remplacer» pour les méthodes en C # héritage?
et new
override
Dans la programmation orientée objet, l'hérédité permet à la fonction de l'héritage et de l'expansion de la classe de base. Lors de la définition des méthodes en dérivés, les développeurs utilisent souvent des mots clés "nouveaux" et "remplacer". Bien que ces deux mots clés semblent avoir des effets similaires, leur objectif est très différent.
situation 1:
Mots-clés
new
La méthode du mot clé représente la classe dérivée est une nouvelle méthode, qui n'a rien à voir avec une méthode dans la classe de base. Même si la classe de base a le même nom, la méthode aura une implémentation distincte de la classe dérivée.
situation 2: new
Mots-clés new
En revanche, Les mots clés indiquent l'implémentation de la même méthode dans la classe de base. Le compilateur garantit que la méthode utilisera la dernière implémentation de la chaîne d'héritage, même si l'objet est référencé par la référence de la classe de base.
override
Différences comportementales
et override
est la façon dont ils gèrent l'appel de la méthode. Si la méthode override
est appelée dans la référence de la classe de base, elle exécutera l'implémentation de la classe dérivée. Cependant, si la méthode est appelée, elle implémentera l'implémentation de la classe dérivée, quel que soit le type de référence.
Exemple de grammaire
Le code suivant démontre la différence entre et new
: override
new
override
Dans cet exemple, appelez () pour effectuer l'implémentation de la classe dérivée sur l'objet du type dérivé. Cependant, Calling () pour effectuer l'implémentation d'origine dans la base () sur les objets du type de base, car Derive.doin () est une nouvelle méthode.
Cas d'utilisation
new
: override
Lorsque la classe dérivée doit être entièrement utilisée par rapport à la classe de base, elle est utilisée lorsqu'elle est entièrement différente de la classe de base.
<code class="language-csharp">public class Base { public virtual void DoIt() { } } public class Derived : Base { public new void DoIt() { } // 新的实现 }</code>
:
Lorsque les classes dérivées souhaitent fournir des méthodes différentes ou améliorées pour hériter de la classe auto-basée, utilisez-la.
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!