请通过SCJP的高手解答,急急急急急急急急急急
各位网友,大家好:
我做到了一个很奇怪的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了呢?
我想关键就是以上这两条,那位知道的网友可以帮我详细的解释一下吗?谢谢了!
--------------------------------------------------------------------------------