java简单程序求过程解析

来源:百度知道 编辑:UC知道 时间:2024/07/08 00:03:41
public class A
{
private static int count=0;
public A()
{
setCount(count);
}
public void setCount(int count)
{
count++;
this.count=count;
}
public int getCount()
{
return count;
}
}

public class B extends A
{
private static int count=0;
public B()
{
setCount(count);
}
public void setCount(int count)
{
count++;
this.count=count;
}
public int getCount()
{
return count;
}
}

public class Test
{
public static void main(String args[])
{
A a=new A();
B b=new B();
System.out.println(a.getCount());
System.out.println(b.getCount());

}
}
结果
1
3
解释解释!!!!!!!!!!!

//我这过程是按调试一步一步进行的,想下面的类B的setCount(int count) 执行2次,count是把父类A的count传给了B

A a=new A();
->
public A()
{
setCount(count);//count=0
}
->
public void setCount(int count)
{
count++;//count=1
this.count=count;
}
->
a.getCount()//return 1;

//*******************************//
B b=new B();
->
public A()
{
setCount(count);//count=1,因为count是静态(static)setCount(count)被类B的覆盖了,count是父类B的
}
->
public void setCount(int count)//类B的setCount(int )
{
count++;//count=2
this.count=count;
}
->
//现在进入B构造
public B()
{
setCount(count);
}
->
public void setCount(int count)//类B的setCount(int )
{
count++;//count=3
this.count=count;
}

public class Test
{
public static void main(String args[])
{
A a=new A(); //执行A构造方法一次,count=1
B b=new B();