我是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)
那是因为你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