java的运算问题

来源:百度知道 编辑:UC知道 时间:2024/06/04 04:08:25
请高手帮忙 讲解一下 这个计算的程序 是怎么得出结果为22的
请把每一步 讲解的尽量详细一点 谢谢啦
Class Base
{
int i;
Base()
{
add(1);
}
void add(int v)
{
i+=v;
}
void print()
{
System.out.println(i);
}
}
Class Extension extends Base
{
Extension()
}
add(2);
}
void add(int v)
{
i+=v*2;
}
}
public class Test
{
public static void main(String args[])
{
bogo(new Extension());
}
static void bogo(Base b)
{
b.add(8);
b.print();
}
}
请问add(1) 这个1赋值给谁啊? i的值是如何变成2的我还是有点糊涂 是从 i+=v这句还是
i+=v*2这句得出的i=2 ?

程序是这样的,首先执行mian方法,然后调用bogo静态方法,传递进去一个Base的子类对象Extension,因为是继承,所以子类构造方法必定先调用父类Base的构造方法,在Base的构造方法中,调用Base的add方法,传递进去一个1,然后i+=v(i的值为2).
然后接着调用子类自己的构造方法,同样也是调用子类的add方法,传递进去一个2,然后i+=v*2(i的值变为6),最后才执行bogo中,再次调用子类的add方法,i+=v*2,这时i的值为22.

两个类之间用 空行或者////////////////////////////////////////分隔开,这样很难看明白。