{ package Person; use Moose; has name => (is => "ro", writer => "_rename", required => 1); } { package AnonymousPerson; use Moose; use MooseX::hasn't; extends "Person"; hasn't name => (default => 'anon'); } my $dude = AnonymousPerson->new; say($dude->can('_rename') ? 'true' : 'false'); # false say($dude->name); # croaks