Maison >développement back-end >C++ >Remplacement ou masquage en C# : quelle est la différence ?

Remplacement ou masquage en C# : quelle est la différence ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-18 08:32:09123parcourir

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

Remplacement de méthode et masquage de méthode en C#

En C#, le remplacement de méthode et le masquage de méthode sont deux mécanismes différents pour modifier les méthodes héritées.

Remplacement de méthode

Le remplacement de méthode implique de créer une méthode virtuelle dans la classe de base et de redéfinir son implémentation dans la classe dérivée. Cela permet aux classes dérivées de fournir des versions plus spécifiques ou modifiées des méthodes tout en conservant les mêmes noms et paramètres de méthode.

Le remplacement de méthode est utilisé dans les situations suivantes :

  • Vous souhaitez que la classe dérivée fournisse des implémentations personnalisées des méthodes héritées de la classe de base.
  • Les méthodes de la classe de base sont marquées virtuelles.
  • Utilisez le mot-clé override dans les déclarations de méthode dans les classes dérivées.

Méthode de masquage

Le masquage de méthode implique la création d'une nouvelle méthode (nouvelle) avec le même nom et les mêmes paramètres que la méthode de la classe de base. Contrairement au remplacement de méthode, le masquage de méthode crée une méthode complètement nouvelle dans la classe dérivée et ne modifie pas la méthode de la classe de base.

La méthode de masquage est utilisée dans les situations suivantes :

  • Vous souhaitez introduire une méthode différente dans la classe dérivée avec le même nom que la méthode de la classe de base.
  • Les méthodes des classes de base ne sont pas déclarées comme virtuelles.
  • Utilisez le mot-clé new dans les déclarations de méthode dans les classes dérivées.

Application pratique

Remplacement de méthode :

  • Méthodes héritées personnalisées
  • Fournir un comportement polymorphe

Méthode de masquage :

  • Compatibilité ascendante (évitant les problèmes lorsque de nouvelles méthodes sont ajoutées à l'avenir)
  • Covariance des types de retour (renvoi d'instances de classe dérivées à partir de méthodes de classe de base)

Exemple

L'exemple suivant illustre le remplacement et le masquage de méthodes :

<code class="language-csharp">class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Generic animal sound");
    }
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Bark");
    }

    public new void Run()   // 方法隐藏
    {
        Console.WriteLine("Dog running");
    }
}</code>

Dans cet exemple, la méthode MakeSound est remplacée dans la classe Dog pour fournir une implémentation concrète. La méthode Run est masquée et une nouvelle méthode est créée dans la classe Dog.

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