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?

Quelle est la différence entre les mots clés «nouveaux» et «remplacer» pour les méthodes en C # héritage?

DDD
DDDoriginal
2025-01-28 12:01:09855parcourir

What's the Difference Between `new` and `override` Keywords for Methods in C# Inheritance?

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

La principale différence entre

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!

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