Raku supports nested classes, however they are really only useful for grouping units of behavior together into a namespace. There is no particular benefit as far as access to private methods or attributes that can't be achieved by non-nested classes. Access to inner classes must use fully qualified paths.
class Outer {
has $.value is rw;
method double { self.value ×= 2 }
class Inner {
has $.value is rw;
}
}
# New Outer instance with a value of 42.
my $outer = Outer.new(:value(42));
say .^name, ' ', .value given $outer;
$outer.double;
say .^name, ' ', .value given $outer;
# New Inner instance with no value set. Note need to specify fully qualified name.
my $inner = Outer::Inner.new;
# Set a value after the fact.
$inner.value = 16;
# There is no way for the Inner object to call the Outer .double method.
# It is a separate, distinct class, just in a funny namespace.
say .^name, ' ', .value given $inner;
$inner.value /=2;
say .^name, ' ', .value given $inner;