Ну, я не согласен, что то, что вы хотите сделать, улучшит читабельность. Если вы хотите разделить интерфейс и реализацию, я думаю, что следующее намного лучше:
abstract class MyClass {
//Public methods:
int getFoo();
factory MyClass() => _MyClass();
}
class _MyClass implements MyClass {
//Private variables:
int _foo = 0;
//Private methods:
void _incrementFoo() => _foo++;
//Public methods implementation:
int getFoo() => _foo;
}
Если вы действительно хотите сделать это по-своему, у вас должен быть способ сообщить вам, что они являются частью вашего класса. Вы могли бы сделать что-то вроде этого:
class MyClass {
//Private variables:
int _foo = 0;
//Private methods:
void _incrementFoo() => _incrementFooImpl(this);
//Public methods:
int getFoo() => getFooImpl(this);
}
void _incrementFooImpl(MyClass myClass) {
myClass._foo++;
}
int getFooImpl(MyClass myClass) {
myClass._incrementFoo();
return myClass._foo--;
}
Но я думаю, что это довольно уродливо, и вы заканчиваете тем, что добавили в свой код множество глобальных методов, которые могут затруднить понимание, к какому классу принадлежит каждый метод.