public class ShadowTest { public int x = 100; class FirstLevel { public int x = 200; String toString(int x) { return "x = " + x + "\nthis.x = " + this.x + "\nShadowTest.this.x = " + ShadowTest.this.x; } public String toString() { return "X in FirstLevel is "+x+" and "+ShadowTest.this;} } public String toString() { return "X in ShadowTest is "+x; } public static void main(String args[]) { ShadowTest st = new ShadowTest(); ShadowTest.FirstLevel fl = st.new FirstLevel(); System.out.println(fl.toString(23)); System.out.println(st); System.out.println(fl); } }