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
Libérer: 2025-01-28 11:56:09
original
260 Les gens l'ont consulté

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.

public virtual void DoIt();
Copier après la connexion
<景> 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
public new void DoIt();
Copier après la connexion

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

public void DoIt();
Copier après la connexion

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

public override void DoIt();
Copier après la connexion

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 de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal