Bon, je t'explique.
Dans ton .pl, tu as mis ceci :
my $Probe = Probe::Main->new();
Donc tu fais appel à la classe Main. Dans Main.pm, il te print new main.
Dans cette classe, tu as
1 2 3 4 5 6 7 8 9 10
| use base qw( Probe::Data Probe::Design );
sub new {
print "new main\n";
my ( $class, $ref_arguments ) = @_;
$class = ref($class) || $class;
my $this = $class->SUPER::new($ref_arguments);
bless( $this, $class );
return $this;
} |
La classe héritera des méthodes des classes Data et Design. Le constructeur de la classe Main fait appel à sa super CLASSE, donc à celui qui est hérité en premier. Dans ton cas, ce sera donc la classe Data. De ce fait, il te print new data et c'est tout. C'est pour ça qui tu as juste :
$ perl probe.pl
new main
new data
Mais ça ne veut pas dire que l'héritage n'a pas fonctionné, c'est juste que la classe design n'a pas été instanciée, et ça n'a aucune importance. Si tu n'es pas persuadé de ce que je te dis, rajoute cette méthode dans la classe design.
1 2 3 4 5 6 7
| sub bonjourdesign {
my $this = shift;
print "bonjour c'est design";
return;
} |
et dans probe.pl, rajoute cette ligne
Tu verras que l'héritage fonctionne à merveille
Partager