Basilides has asked for the wisdom of the Perl Monks concerning the following question:
Hi, I'm having trouble using SUPER to call an ancestor's constructor.
Say i've got an abstract class, Word, and a subclass, Noun, which derives from it, and calls it's parent's constructor, but then takes a few extra parameters.
The only way I can get it to work is to create and bless my $self and then call SUPER:
This seems very clunky & makes me think it's hardly worth setting up the inheritance. But I know that in Java you can do it in one line, so I bet you can in Perl too? Can anyone suggest an optimised version of the above?#!/usr/bin/perl -w use strict; package Word; sub new { my $classname = shift; my $self = {}; $self->{stem} = shift; $self->{english} = shift; bless $self, $classname; return $self; } package Noun; our @ISA = "Word"; sub new { my $classname = shift; my $self = {}; bless $self, $classname; $self = $self->SUPER::new(shift, shift); $self->{gender} = shift; $self->{nom_sg} = shift; $self->{gen_sg} = shift; return $self; } package main; my $w = new Noun("ai(=m-", "blood", "n", "a", "atos"); print $w->{english};
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: inheritance: constructors
by djantzen (Priest) on Jun 24, 2002 at 23:22 UTC | |
by Anonymous Monk on Dec 01, 2012 at 02:50 UTC | |
by Athanasius (Archbishop) on Dec 01, 2012 at 03:33 UTC | |
by jdporter (Paladin) on Dec 01, 2012 at 04:12 UTC | |
by Athanasius (Archbishop) on Dec 01, 2012 at 04:41 UTC | |
| |
by Anonymous Monk on Jun 18, 2013 at 20:30 UTC | |
by Anonymous Monk on Dec 01, 2012 at 02:52 UTC | |
Inheritance and NEXT
by pjf (Curate) on Jun 25, 2002 at 00:20 UTC | |
Re: inheritance: constructors
by dws (Chancellor) on Jun 24, 2002 at 22:26 UTC | |
by rjray (Chaplain) on Jun 25, 2002 at 10:05 UTC | |
Re: inheritance: constructors
by frankus (Priest) on Jun 25, 2002 at 11:43 UTC | |
Re: inheritance: constructors
by tobyink (Canon) on Dec 01, 2012 at 12:48 UTC |
Back to
Seekers of Perl Wisdom