Maison >développement back-end >C++ >Ombrage vs remplacement en C #: Quelle est la différence?

Ombrage vs remplacement en C #: Quelle est la différence?

DDD
DDDoriginal
2025-01-28 14:16:09659parcourir

Shadowing vs. Overriding in C#: What's the Difference?

caché et réécriture en C #: dans une analyse de -pth

Dans la programmation orientée objet, le mécanisme d'héritage est très important dans l'expansion et la modification. Cependant, il existe deux mécanismes différents lors de la modification des méthodes: la cachette et la réécriture.

Hidden: La méthode de protection de la fondation

Hidden est un membre du même nom qu'un membre qui a hérité de la classe de base. Différente de la réécriture, la classe dérivée n'établira pas une relation père -son. Au lieu de cela, il crée une nouvelle entité de membres de la Fondation Hidden.

Ce qui suit est un exemple:

Dans cette scène, la méthode Sayhello () déclarée chez le chien cache la méthode héritée de l'animal. Lorsque l'objet Dog appelle Sayhello (), il exécutera la méthode cachée pour bloquer l'implémentation de la classe de base.

<code class="language-csharp">class Animal
{
    public virtual string SayHello() { return "Hello from Animal"; }
}

class Dog : Animal
{
    public new string SayHello() { return "Hello from Dog"; }
}</code>
Réécriture: modifiez le comportement de la méthode de classe de base

En revanche, la réécriture fait référence à la même méthode de signature de l'héritage de l'état des sous-classes que l'héritage de la classe parent. Par défaut, la méthode de réécriture hérite de l'accès au modificateur et du type de retour de la méthode de classe de base. Cependant, ils peuvent modifier la réalisation des coutumes.

Dans cet exemple, la méthode Sayhello () dans le chien réécrit la méthode définie chez l'animal. Lorsque vous appelez l'objet chien, la méthode de réécriture est fournie pour fournir des comportements personnalisés spécifiques au chien.

La différence clé entre la cachette et la réécriture
<code class="language-csharp">class Animal
{
    public virtual string SayHello() { return "Hello from Animal"; }
}

class Dog : Animal
{
    public override string SayHello() { return "Hello from Dog"; }
}</code>

Autorisations d'accès: L'accès à la méthode de base de la méthode de réserve de la méthode de la classe de base, et le caché permettant à la classe dérivée de le modifier.

Relation de l'héritage:
    réécrire l'établissement d'une relation père -son et cachant des membres de la classe de base.
  • Membres cachés: Les membres qui peuvent masquer l'héritage peuvent causer des problèmes lors de l'utilisation du code de base.
  • Domaine d'activité: La méthode de réécriture est liée à la structure hiérarchique de l'héritage, et la méthode cachée est limitée à la portée de la classe dérivée.
  • Quand utiliser caché et réécriture
  • Hidden est généralement utilisé pour éviter de nommer les conflits dans la structure du niveau d'héritage, mais il peut également être utilisé pour cacher l'héritage de la classe dérivée.
  • En revanche, la réécriture du comportement de la sous-classe peut modifier la méthode de l'héritage, offrant ainsi une flexibilité pour définir la fonction sans détruire l'arbre d'héritage.

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