perl.org wrote:
> I have a vendor-provided OO package and a custom OO package.  The
> custom package does not need a constructor.  I want to have a class
> that inherits from both.  It also does not need a constructor - it
> should use the constructor from the vendor-provided package.
> 
> I have a problem when my inheriting class tries to call methods my
> custom superclass - it says the method is not available to the
> subclass (Can't locate object method "whatever" via package).  Does
> this mean all of the classes need to have constructors?  

If the base class constructor is written properly, it should be inheritable.
If not, you'll have to write one.

Inheritable:

   sub new {
       my $class = shift;
       bless {}, $class;
   }

Not inheritable:

   sub new {
       bless {};
   }

also not inheritable:

   sub new {
       bless {}, 'My::Class';
   }

> If so, in my
> constructor, how do I explicitly call the parent constructor?

   package Bar;

   @ISA = qw/Foo/;

   sub new {
       my $class = shift;
       bless Foo->new(@_), $class;
   }

> And in
> the case of multiple inheritence, will it automatically call all
> constructors in the ISA array? 

No.

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to