输出Java程序

Siv*_*iah 2 java oop

我是Java初学者.任何人都可以解释为什么打印输出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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Nea*_*eal 5

那是因为你Class A在这里重新定义:

    class A implements Foo {
        public int bar() {
            return 2;
        }
    }
    System.out.println(fubar(new A()));
Run Code Online (Sandbox Code Playgroud)

所以当return foo.bar();你回来的时候2