You want your new() method to be very simple. It basically blesses the object, then calls $self->init() which does all the real work. You parent class may have this as an abstract method (just dies; forces child to define sub init) or it could be an empty method that just returns.
All derived classes would inherit the Parent new() method and either define or inheirit init().
package Parent;
sub new {
my $invocant = shift;
my $class = ref($invocant) || $invocant;
my $self = {};
bless $self, $class;
$self->init(@_);
return $self;
}
sub init {
return; # or die to force child class to do something here
}
package Child;
use base qw(Parent);
sub init {
# do child specific stuff;
}
For a great OOP reference, see Damian's book
Object Oriented Perl.
Ivan Heffner
Sr. Software Engineer, DAS Lead
WhitePages.com, Inc.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.