java - Inheritance from inner class. Access to enclosing entity from reference to inner class -
i know if want extend inner class should create this:
class outer{ class inner{} } class extends outer.inner{ my(outer outer){ outer.super(); } } but @ situation don't understand how should do? how enclosing instance of inner object?
class extends outer.inner{ my(inner inner){ // how enclosing instance of inner here } } this variant doesn't compile:
class outer{ class inner{} } class extends outer.inner{ my(outer.inner inner){ inner.outer.this.super(); } }
if understand correctly, want access members of outer class class extending inner class.
you can depending on scope in declare class. when extend inner class within outer class, members in scope , can access them, like
class outer { private int var = 0; class inner {} class extends outer.inner { my() { var = 1; } } } if declare class outside outer class, can still access bundle private members if extending type in same package
class outer { int var = 0; class inner {} } class extends outer.inner { my( outer outer ) { outer.super(); outer.var = 1; } } if you're outside bundle scope, might solve enclosing class inheriting inner class in class inheriting outer class access protected members:
class outer { protected int var = 0; class inner {} } class outermy extends outer { class extends inner { my( outer outer ) { var = 1; } } } if isn't alternative either, access public members storing outer instance manually.
class outer { public int var = 0; class inner {} } class extends outer.inner { private outer outer; my( outer outer ) { outer.super(); this.outer = outer; } void method() { outer.var = 1; } } as far know options, cannot access jvms internal instance of enclosing class
java inheritance inner-classes
No comments:
Post a Comment