请通过SCJP的高手解答,急急急急急急急急急急

bugpro 2002-12-14 03:16:37
各位网友,大家好:
我做到了一个很奇怪的Java认证考题,始终不解,恳请那位知道的网友帮忙解释一下好吗?
题目是这样的:
What is the output when the user runs "java TestA"?
以下内容为程序代码
--------------------------------------------------------------------------------

public class TestA
{
TestA()
{
System.out.println("P ");
this.init();
}
void init()
{
System.out.println("Q ");
}
public static void main(String[] args)
{
TestB testb=new TestB();
}
}
class TestB extends TestA
{
int i=1;
TestB()
{
super();
System.out.println(i+" ");
}
void init()
{
System.out.println("C ");
this.i=2;
System.out.println(i+" ");
}
}

--------------------------------------------------------------------------------

A. P Q 1
B. P C 0 2
C. P C 1 1
D. P C 2 2
E. P C 2 1
F. P Q 0
这道题的正确答案是E.我看这到题目的答案好象是D.可是运行了一遍程序,E答案是正确的。这是为什么呢?想了好半天,始终不解!!!
1.这最后一个1好象是调用了TestB类中的Constructor的super()后,调用了System.out.println(i+" ");的结果,可是实例变量i已被初始化为2,怎么又会边1了呢?
我想关键就是以上这两条,那位知道的网友可以帮我详细的解释一下吗?谢谢了!



--------------------------------------------------------------------------------
...全文
20 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
weimenren 2002-12-14
  • 打赏
  • 举报
回复
你怎么开了几个贴子
DavidBone 2002-12-14
  • 打赏
  • 举报
回复
关键就是,引用method或variable的时候要首先从当前类找起没有才会找super类
就这样

51,411

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧