#!/usr/bin/env perl
use 5.010;
package Father;
use Moose;
sub char { lc ref shift }
package Son;
use Moose;
extends 'Father';
package main;
say ref($_) . '->char() = ' . $_->char for new Father, new Son;
####
Father->char() = father
Son->char() = son
####
has 'char' => (
is => 'ro',
builder => '_build_char', # May override _build_char in subclasses
init_arg => undef, # Disallow setting via constructor
);
sub _build_char { lc ref shift }
####
use MooseX::Declare;
class Father {
has char => (
is => 'ro',
builder => '_build_char',
init_arg => undef,
);
sub _build_char { lc ref shift }
}
class Son extends Father { }