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."); } }
Maintenant, lors de l'appel de sd.Say(), le résultat sera :
Called from Special Derived. Called from Base.
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!