java题库问题求解,谢谢
interfaceFoo{intbar();}publicclassBeta{classAimplementsFoo{publicintbar(){return1;}}p...
interface Foo{
int bar();
}
public class Beta{
class A implements Foo{
public int bar(){return 1;}
}
public int fubar(Foo foo){return foo.bar();
public void testFoo(){
class A implements Foo{
public int bar(){return 2;}
}
system.out.println(fubar( new A() ));
}
public static void main(String[] args){
new Beta.testFoo();
}
}
结果输出2,为什么?求详细的过程谢谢
很混乱 展开
int bar();
}
public class Beta{
class A implements Foo{
public int bar(){return 1;}
}
public int fubar(Foo foo){return foo.bar();
public void testFoo(){
class A implements Foo{
public int bar(){return 2;}
}
system.out.println(fubar( new A() ));
}
public static void main(String[] args){
new Beta.testFoo();
}
}
结果输出2,为什么?求详细的过程谢谢
很混乱 展开
3个回答
推荐于2016-10-14
展开全部
public class Beta {
class A implements Foo {
public int bar() {
System.out.println("调用A.bar()");
return 1;
}
}
public int fubar(Foo foo) {
System.out.println("调用Beta.fubar(Foo foo)");
return foo.bar();
}
public void testFoo() {
System.out.println("调用Beta.testFoo()");
class A implements Foo {
public int bar() {
System.out.println("调用testFoo()的内部类A的bar()");
return 2;
}
}
System.out.println(fubar(new A()));
}
public static void main(String[] args) {
new Beta().testFoo();
}
}
输出
调用Beta.testFoo()
调用Beta.fubar(Foo foo)
调用testFoo()的内部类A的bar()
2
展开全部
任何代码运行的时候都是先找最近的作用域,然后再往上一层走。
你看代码就会发现,第二个Class A的定义和 new A()在同一个作用域里。当然会用第二个。
不过,如果你在软件公司写出这样的代码,会被一脚踢飞。
你看代码就会发现,第二个Class A的定义和 new A()在同一个作用域里。当然会用第二个。
不过,如果你在软件公司写出这样的代码,会被一脚踢飞。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大概拜读了此代码,应该是重写了bar()方法。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |