www.farid-hajji.net banner

Farid Hajji

Perl: Einführung, Anwendungen, Referenz (2/e) [Support-Site]

Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2

Beispielprogramm

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
FreeBSD Logo