class FooTest { public static String stuff = ""; public static void main (String[] args) { FooTest t = new FooTest(); t.go(); } public void go() { Foo f1 = new Foo(); // instance of anon subclass Foo f2 = new Foo(){ public void say () { System.out.println("Modded Foo says: " + stuff); } }; f1.whichClassAmI(); f2.whichClassAmI(); stuff = "stuff"; f1.say(); f2.say(); Foo f3 = f1.getAnotherFoo(); // <-- enclosing class is null f3.say(); Foo f4 = f2.getAnotherFoo(); // <-- works now stuff = "cloned stuff"; f4.say(); } }