The difference between hard-coding
Parent-> as opposed to invoking
SUPER is relevant when you have multiple levels of inheritance. If you created a Grandchild, a method using SUPER would climb the
@ISA tree to resolve
new, whereas hard-coding
Parent-> will go straight there. It's also useful for code reuse, since SUPER is not package specific. For example, if you had a series of validation routines, you could open
sub validate { with
my $self = shift; $self->SUPER::validate(); and it would crawl the inheritance tree correctly without refactoring and the associated fagility.
You would only need to define a constructor in the child object if it requires additional functionality - in this case, because Child has an additional property.
If you are interested in all this or rolling your own OO, a read read through of perlboot and perltoot is merited.