Maison > développement back-end > C++ > Comment appeler directement une méthode de classe de base, en contournant les remplacements intermédiaires ?

Comment appeler directement une méthode de classe de base, en contournant les remplacements intermédiaires ?

Patricia Arquette
Libérer: 2025-01-01 12:14:10
original
984 Les gens l'ont consulté

How to Call a Base Class Method Directly, Bypassing Intermediate Overrides?

Appeler directement la méthode de base

En POO, l'accès aux méthodes de classe de base au sein des classes dérivées est essentiel pour le remplacement de méthode. Cependant, la question se pose : "Comment pouvons-nous appeler la méthode de base de la base, en contournant les remplacements intermédiaires ?"

Pour éviter l'appel indésirable à Derived.Say() dans la classe SpecialDerived, le code source d'origine ne peut pas être modifié. Il existe cependant une solution de contournement. En introduisant une nouvelle méthode, CustomSay(), dans la classe Derived et en la remplaçant dans SpecialDerived, nous pouvons rediriger le comportement par défaut tout en préservant la méthode Say() existante.

Voici le code modifié :

// Cannot change source code
class Derived : Base
{
    public override void Say()
    {
        CustomSay();

        base.Say();
    }

    protected virtual void CustomSay()
    {
        Console.WriteLine("Called from Derived.");
    }
}

class SpecialDerived : Derived
{
    protected override void CustomSay()
    {
        Console.WriteLine("Called from Special Derived.");
    }
}
Copier après la connexion

Maintenant, lors de l'appel de sd.Say(), le résultat sera :

Called from Special Derived.
Called from Base.
Copier après la connexion

L'utilisation d'une nouvelle méthode CustomSay() permet la personnalisation sans modifier la méthode Say() remplacée. Cependant, il est généralement déconseillé d'accéder aux méthodes de base au-delà du premier niveau en raison du risque de confusion et de problèmes de maintenance.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal