The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;

{

    package MyApp::RoleA;
    use Moose::Role;
    use MooseX::Role::AttributeOverride;

    has_plus 'fun' => ( default => 'yep', );

    no Moose::Role;

}
{

    package MyApp::RoleB;
    use Moose::Role;

    with qw(MyApp::RoleA);

    requires qw(have);

    no Moose::Role;

}
{

    package MyApp;
    use Moose;

    has 'fun' => (
        is  => 'rw',
        isa => 'Str'
    );

    sub have {
        shift->fun('you betcha');
    }

    with qw(MyApp::RoleB);

    __PACKAGE__->meta->make_immutable;
    no Moose;

}
{

    package main;

    use Test::More tests => 2;

    my $test = MyApp->new();

    is( $test->fun, 'yep', 'Default was set by role' );
    $test->have;
    is( $test->fun, 'you betcha', 'can be modified' );

}