Lorsqu'une classe hérite d'une autre avec une méthode globale, on aura couramment l'usage suivant :

// dans une classe Cbase au aura :
Procedure GLOBALE UneMéthodeGlobale
...

// dans CDérivée, qui dérive de Cbase on aura :
Procedure GLOBALE UneMéthodeGlobale
CBase::UneMéthodeGlobale() // ancienne syntaxe
ancetre::UneMéthodeGlobale() // nouvelle syntaxe


Un intérêt de cette nouvelle syntaxe est de limiter les risques d'erreur si une classe vient s'insérer dans l'arbre d'héritage. En effet avec l'ancienne syntaxe, si dans l'exemple ci-dessus on insère une nouvelle classe :

 

// dans la classe CIntercalée, qui dérive de CBase et qui devient la classe de base de CDérivée
Procedure GLOBALE UneMéthodeGlobale
...
CBase::UneMéthodeGlobale() // ancienne syntaxe
ancetre::UneMéthodeGlobale() // nouvelle syntaxe


L'ancienne syntaxe ne fait pas ce que l'on veut par défaut dans le code de CDérivée : il faut penser à aller modifier tous les appels à la classe de base dans CDérivée. En revanche la nouvelle syntaxe ne nécessite aucune modification de code.

 

C'est également pratique dans le cas de renommages et les suppressions de classes.

 

< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée