OVH Cloud OVH Cloud

héritage de classe

1 réponse
Avatar
cyrille
bonjour,

pouvez vous m'aider à clarifier la différence de déclaration d'héritage
entre ces deux versions :

1:

package ClasseFille ;
use ClasseParent ;
@ISA = qw(ClasseParent);

2:

package ClasseFille ;
use base qw(ClasseParent);

merci d'avance,
cyrille

1 réponse

Avatar
Jedaï
cyrille wrote:
bonjour,

pouvez vous m'aider à clarifier la différence de déclaration d'héritage
entre ces deux versions :

1:

package ClasseFille ;
use ClasseParent ;
@ISA = qw(ClasseParent);

2:

package ClasseFille ;
use base qw(ClasseParent);

merci d'avance,
cyrille



Avec use base, la filiation est fixée à la compilation, avec @ISA à
l'exécution (je crois...), de plus use base fait un require
ClasseParent, pas un use ClasseParent.

La différence n'est pas très grande à vrai dire...
Mais use base fait hériter des champs de la classe parente si celle-ci
utilisait le pragma field, tandis que @ISA n'influe pas dans ce cas. :)
De plus, use base est plus court et plus cool je trouve, comme il est
plus récent et que c'est un pragma, on peut toujours espérer qu'il
restera en prise avec l'évolution du modèle objet dans Perl(5 puisque 6
sera tout à fait différent, beaucoup mieux au niveau objet, plus simple,
puissant, etc...).