Specializing attributes

package Number;
use Moose;

has 'num' => ( is => 'ro', isa => 'Num' );

sub round { ... }

package Integer;
use Moose;
extends 'Number';

has '+num' => ( isa => 'Int' );

sub is_prime { ... }