Maison > développement back-end > C++ > Quelle est la différence entre l'observation de la méthode et le remplacement en C #?

Quelle est la différence entre l'observation de la méthode et le remplacement en C #?

Patricia Arquette
Libérer: 2025-01-28 14:05:09
original
274 Les gens l'ont consulté

What's the Difference Between Method Shadowing and Overriding in C#?

C # Méthode cachée et réécrite: explication détaillée

En C #, la classe dérivée peut faire fonctionner la méthode de la classe de base de deux manières différentes: cachette de méthode et réécriture de la méthode. La différence entre la compréhension de ces deux concepts est essentielle pour la maintenance et l'héritage efficaces du code.

La méthode cache

Lorsqu'une classe déclare une nouvelle méthode du même nom que la méthode chinoise de la Fondation, mais il n'y a pas de déclaration explicite comme méthode de réécriture, la méthode sera cachée. La méthode de la nouvelle déclaration masque effectivement la mise en œuvre de la classe de base et fournit sa propre implémentation indépendante.

Exemple:

Lorsque CLB appelle Clb.foo () Dans l'instance de la classe B, il exécute l'implémentation de la classe B et des sorties "1". Cependant, lorsque nous convertissons CLB en classe A, l'appelant accède à l'implémentation de la classe de base de foo () et de sorties "5".

Réécriture
class A {
   public int Foo(){ return 5;}
}
class B : A{
   public new int Foo() { return 1;} //隐藏
}
Copier après la connexion

Différent de Hidden, la méthode réécrit la mise en œuvre de la nouvelle méthode d'implémentation dans la classe dérivée. Ceci est réalisé en utilisant le mot-clé Override.

Exemple: <>

Lorsque l'instance de la classe B appelle Clb.Bar (), il exécute l'implémentation de réécriture dans la classe B et les sorties "1". La conversion du CLB pour la catégorie A obligatoire n'affectera pas le comportement, car l'appel et la réalité de la réalité sont toujours appelés.

<区> Différences principales

class A {
   public virtual int Bar(){return 5;}
}
class B : A{
   public override int Bar() {return 1;} //重写
}
Copier après la connexion

Hidden La méthode de la fondation:

Hidden dans la classe dérivée a créé une nouvelle méthode, qui masque l'implémentation de la classe de base. La réécriture a remplacé la réalisation de la classe de base.

La réécriture nécessite des mots clés: La réécriture doit utiliser des mots clés de remplacement pour indiquer explicitement le remplacement attendu.

    Héritage de destruction cachée:
  • En cachant la mise en œuvre de la classe de base, la cachette peut détruire la chaîne d'héritage. Réécrire la relation successive. La méthode cachée n'est pas le polymorphisme:
  • La méthode cachée n'est pas affectée par le mécanisme multi-états (comme la liaison dynamique). La méthode de réécriture montre le polymorphisme et fait différentes réponses en fonction du type d'objet réel.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal