[tpm] Understanding 'use base ...'
Jim Graham
james.a.graham at gmail.com
Mon Jul 14 12:04:22 PDT 2008
Hi
From
> perldoc base
NAME
base − Establish IS−A relationship with base classes at
compile time
SYNOPSIS
package Baz;
use base qw(Foo Bar);
DESCRIPTION
Allows you to both load one or more modules, while setting up
inheri‐
tance from those modules at the same time. Roughly similar in
effect
to
package Baz;
BEGIN {
require Foo;
require Bar;
push @ISA, qw(Foo Bar);
}
The @ISA array is the fundamental way of creating inheritance of
objects in Perl. Literally, if you define one class 'Baz' as a sub-
class of another (base) class 'Foo', you say 'Baz' ISA 'Foo'. See http://en.wikipedia.org/wiki/Isa_%28computer_science%29
'use base' is short-hand for setting up the inheritance yourself. It
says, 'use the following classes as base classes for my class'.
Perl allows multiple inheritance, so in the above example, 'Baz' ISA
'Foo' and 'Bar'. This is distinct from Java and Ruby, which only allow
direct inheritance, although they address these issues with interfaces
and mix-ins, respectively.
Hope this helps, Jim
On 14-Jul-08, at 2:53 PM, Madison Kelly wrote:
> Hi all,
>
> I am working on some docs, and noticed that a module is called via:
>
> use base qw(Net::DBus::Object);
>
> I am trying to understand the 'use base' syntax, and all I've been
> able to find in perldoc is in perlmodlib:
>
> base Establish IS-A relationship with base classes at compile
> time
>
> Can someone either explain to me what this means, or better, point
> me at what docs explain "IS-A relationship"s? I hate "just
> accepting" that something is at it is. Probably why I never get
> anything actually done. :)
>
> Thanks as always!
>
> Madi
> _______________________________________________
> toronto-pm mailing list
> toronto-pm at pm.org
> http://mail.pm.org/mailman/listinfo/toronto-pm
More information about the toronto-pm
mailing list