Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
inheritance.pl
#!/usr/local/bin/perl -w
# inheritance.pl -- Verwendung von @ISA, Vererbung und AUTOLOAD()
use strict;
# ---- Die oberste Klasse ---------------------------------------
package Root;
use vars qw ( $AUTOLOAD );
sub new {
my $self = {}; $self->{'RArg'} = 'TheRoot';
return bless($self, shift());
}
sub method { print "Root::method() called\n"; }
sub AUTOLOAD { print "Root::AUTOLOAD() called for $AUTOLOAD\n"; }
# ---- Erste abgeleitete Klasse von Root ------------------------
package Base1;
use vars qw ( @ISA );
@ISA = qw ( Root );
sub new {
my $self = {}; $self->{'B1Arg'} = "First Baseclass";
return bless($self, shift());
}
sub method { print "Base1::method() called\n"; }
sub methb1 { print "Base1::methb1() called\n"; }
# ---- Zweite abgeleitete Klasse von Root -----------------------
package Base2;
use vars qw ( @ISA );
@ISA = qw ( Root );
sub new {
my $self = {}; $self->{'B2Arg'} = "Second Baseclass";
return bless($self, shift());
}
sub method { print "Base2::method() called\n"; }
# ---- Abgeleitete Klasse von Base1 und Base2 -------------------
package Derived;
use vars qw ( @ISA );
@ISA = qw ( Base1 Base2 );
sub new {
my $self = {}; $self->{'DArg'} = "The Derived Class";
return bless($self, shift());
}
sub method { print "Derived::method() called\n"; }
# ---- Unser Hauptprogramm, von dem alles ausgeht ---------------
package main;
my $obd1 = Derived->new(); # Erzeuge ein Derived-Objekt
my $obbas= Base2->new(); # Erzeuge ein Base2-Objekt
$obd1->method(); # Derived::method()
$obbas->method(); # Base2::method()
$obd1->methb1(); # Suche von Derived bis Base2
$obd1->unknown(); # Welches AUTOLOAD() behandelt mich?
[Prev] [Up] [Relevant Chapter] [Next]
[Alte Quelle]
| Last modified: $Date: 2006/05/18 12:55:58 $ FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy |
|