Monday, 15 March 2010

java - Inheritance from inner class. Access to enclosing entity from reference to inner class -



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