Maison >développement back-end >C++ >Quelle est la différence entre «New» et «Override» en C # Héritage?

Quelle est la différence entre «New» et «Override» en C # Héritage?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-28 12:07:08803parcourir

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

C # Héritage: compréhension new et override

En héritage C #, les mots clés new et override offrent des moyens distincts de gérer le comportement de la méthode dans les classes dérivées. Cette explication clarifie leurs différences et leur utilisation appropriée.

new Modificateur: définir une méthode distincte

Le modificateur new permet à une classe dérivée d'introduire une méthode avec le même nom qu'une méthode dans sa classe de base. Surtout, cela ne remplace pas la méthode de la classe de base; Au lieu de cela, il crée une méthode complètement indépendante.

Exemple:

<code class="language-csharp">public class BaseClass {
    public void MyMethod() { Console.WriteLine("BaseClass Method"); }
}

public class DerivedClass : BaseClass {
    public new void MyMethod() { Console.WriteLine("DerivedClass Method"); }
}</code>

Ici, DerivedClass.MyMethod() est une méthode distincte. L'appel MyMethod() sur une instance DerivedClass exécute la version de la classe dérivée; L'appeler sur une instance BaseClass exécute la version de la classe de base.

override Modificateur: Remplacement d'une méthode virtuelle

Le modificateur override est utilisé pour remplacer l'implémentation d'une méthode A Virtual de la classe de base. La méthode de classe de base doit être déclarée virtual (ou abstract). override s'assure que la version de la classe dérivée est appelée lorsque la méthode est invoquée sur une instance de la classe dérivée.

Exemple:

<code class="language-csharp">public class BaseClass {
    public virtual void MyMethod() { Console.WriteLine("BaseClass Method"); }
}

public class DerivedClass : BaseClass {
    public override void MyMethod() { Console.WriteLine("DerivedClass Method"); }
}</code>

Dans ce cas, DerivedClass.MyMethod() remplace BaseClass.MyMethod(). Appeler MyMethod() sur une instance DerivedClass toujours exécute la version DerivedClass.

Différences clés résumées:

Fonction
Feature new override
Method Creation Creates a completely new method Replaces an existing virtual method
Inheritance Breaks the inheritance chain for the method Maintains the inheritance chain
Base Class Method Base class method remains unaffected Base class method must be virtual/abstract
Création de méthode crée une méthode complètement nouvelle remplace une méthode virtuelle existante Héritage rompt la chaîne d'héritage pour la méthode maintient la chaîne d'héritage Méthode de classe de base La méthode de la classe de base reste non affectée La méthode de la classe de base doit être virtuelle / abstraite table>

Quand utiliser chaque modificateur:

  • Utilisez new lorsque vous voulez une méthode complètement distincte dans la classe dérivée, même s'il partage un nom avec une méthode dans la classe de base. Ceci est utile pour éviter le remplacement involontaire et le maintien de fonctionnalités distinctes.

  • utiliser override lorsque vous avez l'intention d'étendre ou de modifier le comportement d'une méthode virtuelle définie dans la classe de base, fournissant une implémentation spécialisée au sein de la classe dérivée tout en conservant la relation d'héritage pour cette méthode spécifique.

En comprenant ces distinctions, vous pouvez utiliser efficacement l'héritage et le polymorphisme dans vos applications C #.

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