小编use*_*842的帖子

Perl,Moose - 子类不是继承超类的方法

我是Perl的新手,并被指示到Moose作为Perl OO的源代码,但我在使其工作方面遇到了一些问题.具体来说,超类的方法似乎没有被继承.为了测试这个,我创建了三个包含以下内容的文件:

thingtest.pl

use strict;
use warnings;
require "thing_inherited.pm";
thing_inherited->hello();
Run Code Online (Sandbox Code Playgroud)

thing.pm

package thing;

use strict;
use warnings;
use Moose;

sub hello
{
    print "poo";
}

sub bye
{
    print "naaaa";
}

1;
Run Code Online (Sandbox Code Playgroud)

最后,thing_inherited.pm

package thing_inherited;

use strict;
use warnings;
use Moose;

extends "thing";

sub hello
{
    bye();
}

1;
Run Code Online (Sandbox Code Playgroud)

所以人们通常会期望方法再见作为子类的一部分继承,但我得到了这个错误...

Undefined subroutine &thing_inherited::bye called at thing_inherited.pm line 11.
Run Code Online (Sandbox Code Playgroud)

谁能解释我在这里做错了什么?谢谢!

编辑:在这样做时,我遇到了另一个难题:从我的超类调用我的基类中的一个方法应该被超类覆盖不会被覆盖.说我有

sub whatever
{

    print "ignored";

}
Run Code Online (Sandbox Code Playgroud)

在我的基类中并添加

whatever();
Run Code Online (Sandbox Code Playgroud)

在我的再见方法中,调用再见不会产生覆盖的结果,只打印"忽略".

oop perl inheritance moose

2
推荐指数
1
解决办法
516
查看次数

标签 统计

inheritance ×1

moose ×1

oop ×1

perl ×1