I am a Java beginner. Can anyone explain why is it printing output 2?
interface Foo { int bar(); } public class Beta { class A implements Foo { public int bar() { return 1; } } public int fubar(final Foo foo) { return foo.bar(); } public void testFoo()// 2 { class A implements Foo { public int bar() { return 2; } } System.out.println(fubar(new A())); } public static void main(String[] args) { new Beta().testFoo(); } }