in reply to Duh. What am I missing about inherited constructors?
When I set croak calls and other things in the supposedly-inherited routine (in Foo), they never went off. But the routine in Bar did.
This is confusing. Some example code would help tremendously. Do you mean the routine is defined in the Foo package? Or do you mean a routine defined in Bar? Methods in Foo are not inherited by Bar. Calling a method on a Foo object not defined in Foo but defined in the Bar package should correctly "go off" in the Bar routine.
Furthermore: other methods defined in Foo (but not in Bar...) were available. So, it’s not like Perl didn’t know what package I was talking to ... it’s just that a routine defined in the child-class was ignored in favor of the parent, and I don’t know quite why.
I think you have the child-parent relationship backwards. Methods defined in the Foo package should indeed be available for a Foo object but not for a Bar object. Foo is the child class and Bar is the parent.
The following is a trivial pet-peeve of mine. You don't need to bless $self, $class inside Foo::new because Bar::new should already have blessed it. The first parameter to Bar::new will be "Foo".
|
---|