3

这个问题是关于 Perl 和 Moose 继承的。

假设我有一个父类和一个婴儿类。婴儿“扩展”父母。如果两个类都具有“name”属性,那么 Baby 如何在不获取自己的名字的情况下访问父母的名字?

package Baby;
use Moose;
extends 'Parent';

has 'name', is => 'ro', isa => 'Str', default => 'Baby';

注意:父类本质上与名称 default => 'Parent' 相同。

所以问题是,在我的程序中,我将如何访问父母的姓名?

例如:

...
$baby = Baby->new();
say "my name is " . $baby->name();
say "my Parent's name is " . ???? 

谢谢!

4

1 回答 1

5

你没有。您还没有创建新属性;您刚刚覆盖了父类中的那个。您为示例类选择的名称真的很不幸,因为在现实世界中,婴儿“拥有”父母,但通过使用继承,您创建了婴儿“是”父母的情况。

于 2012-11-08T18:38:33.647 回答