Maison >développement back-end >C++ >Quelle est la différence entre l'observation et le remplacement en C #?
dans la compréhension de la compréhension du caché et de la réécriture en C #
Supposons que nous ayons une base "A", y compris deux méthodes "foo" et "bar". La méthode "FOO" est déclarée pour le public et la déclaration de la méthode "BAR" est virtuelle publique, permettant à la classe dérivée de réécrire son implémentation. Maintenant, considérons un dérivé "B" hérité de "A".
Hidden
par exemple, dans le fragment de code fourni:
Les nouveaux mots clés "avant la méthode chinoise de classe
Classe" B "indiquent que l'objet de type" B "est accessible par le type" B ".<code class="language-c#">public new int Foo() { return 1;} //隐藏</code>
réécriture
En revanche, lorsque la réécriture se produit dans une méthode de la classe dérivée, la méthode est la même que la méthode virtuelle ou la méthode d'abstraction dans la classe de base. Dans ce cas, l'implémentation de la classe dérivée a explicitement remplacé l'implémentation de la classe de base et est devenu le comportement par défaut de l'instance dérivée.
Parce que l'instruction "bar" dans la base "A" est virtuelle, le mot-clé "Override" permet à la classe "B" de la réécrire et de fournir son propre comportement.
<code class="language-c#">public override int Bar() {return 1;} //重写</code>Impact
Lors de la conversion des instances dérivées en une référence de classe de base, la cachette peut entraîner un comportement accidentel. Dans ce cas, la méthode cachée de la classe de base peut être appelée au lieu de la méthode de réécriture dans la classe dérivée, qui peut entraîner des erreurs pendant l'exécution.
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!