How can I make something like this work:
class Outer { int some_member; abstract class InnerBase { abstract void method(); } } class OuterExtends
The answer is: you can't, because it would break encapsulation. Only InnerBase can have access to attributes of Outer, not OuterExtendsInner. It is not direct inheritance. InnerBase does not inherit of Outer.