Я новичок в наследовании Perl и не смог найти явные инструкции для наследования родительского конструктора. Я предположил, что все методы (включая конструктор) из родительского класса наследуются, но, похоже, это не так. Таким образом, это не достаточно:Inherit Parent Constructor
package Child;
use strict;
use Parent;
our @ISA=qw(Parent);
Вместо этого мне нужно добавить конструктор, который вызывает родительский конструктор:
package Child;
use strict;
use Parent;
our @ISA=qw(Parent);
sub new {
my $self=Parent::new(shift);
bless $self;
return $self;
}
Возможно, кто-то может прояснить логику для меня и скажите мне, если родительский конструктор наследоваться, не выполняя то, что я сделал выше (явное объявление и вызов родительского конструктора)?
Не является «новым» только другим методом и используется как конструктор только в качестве условного обозначения? –
Если вы используете файловую систему без учета регистра, у вас возникнет конфликт между вашей «родительской» и «родительской» прагмой. – ysth
'base.pm' все еще существует и по-прежнему распространяется с Perl, но это не особенно рекомендуется. В него встроено множество трещин, которые касаются прагмы «полей», которую никто не использует. – tobyink