Maison >développement back-end >C++ >Quelle est la différence entre les mots clés «nouveaux» et «Override» dans l'héritage de la méthode?

Quelle est la différence entre les mots clés «nouveaux» et «Override» dans l'héritage de la méthode?

DDD
DDDoriginal
2025-01-28 11:56:09275parcourir

What's the Difference Between `new` and `override` Keywords in Method Inheritance?

dans -depth compréhension des mots clés "nouveaux" et "remplacer"

Dans la programmation orientée objet, l'héritage est le concept de base, permettant aux dérivés d'élargir et de modifier le comportement des classes de base. Lors de la définition de ces classes, les développeurs peuvent avoir besoin de réécrire ou de créer une nouvelle implémentation. Afin de clarifier cette différence, examinons les scènes suivantes:

Scène 1: classe de base

Cette grammaire déclare une méthode virtuelle dans la classe de base. La méthode virtuelle peut être réécrite dans la catégorie dérivée pour fournir une implémentation spécifique.

<code class="language-c#">public virtual void DoIt();</code>
Scène 1: Classe de division

Dans la méthode dérivée, l'utilisation de "Nouveau" créera une méthode nouvelle et indépendante, et son nom est le même que la méthode de la classe de base. Cependant, cela n'est pas considéré comme réécrit, et lorsque la classe de base est appelée, le comportement de la méthode de la classe de base n'affectera pas le comportement de la classe de base.

Scène 2: Classe de base
<code class="language-c#">public new void DoIt();</code>

Il s'agit d'une méthode non utile et ne peut pas être réécrite dans la classe dérivée. Les dérivés doivent utiliser le "nouveau" modificateur pour réaliser une nouvelle méthode avec le même nom. Scène 2: Classe de division

<code class="language-c#">public void DoIt();</code>

Les modificateurs de "remplacement" indiquent que la méthode de la classe dérivée consiste à réécrire une autre méthode de la même signature dans la classe de base. Lorsque l'appel est appelé par une classe de base, la méthode de réécriture sera exécutée.

Différences réelles

<code class="language-c#">public override void DoIt();</code>

Override:

Quel que soit le type de référence, tant que la méthode est appelée, la méthode de réécriture de la classe dérivée sera appelée.

nouveau: uniquement lorsque l'objet de classe dérivée est référencé, la nouvelle méthode créée dans la classe dérivée est appelée.

  • Utilisation recommandée
  • Habituellement, lorsque le comportement des méthodes d'héritage étendu est recommandé, "remplacer" est recommandé. Si vous souhaitez créer une nouvelle méthode avec le même nom dans la classe dérivée, utilisez "Nouveau".
  • Exemple
Considérez le code suivant:

Dans cet exemple, "Derive.doiit ()" réécrit "base.doiit ()", et lorsque la méthode "B" variable "DOIT ()" est appelée de l'objet "B" Dériable "dérivé", il sera appelé pour l'appeler.

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