[bo]程序先从这里开始[/bo]
static int aa=10;
static{
System.out.println(aa);
}
[bo]然后,就到下面的[/bo]
static int aa=8;
static{
System.out.println(aa);
}
[bo]因为static是程序解析时,先执行一遍的,也是唯一一遍,所以以后再执行到,它也不会再重新分配存储空间。并且它的空间是唯一的,也就是说,上面的两个aa,其实是一个。[/bo]
[bo]然后程序从这里再开始[/bo]
public class Test {
public Test() {
}
public static void main(String[] args)
{
new B();
}
}
[bo]从这里开始,实例化一个类,B 也就是 new B();[/bo]
[bo]这里是实例化的程序部份,也就是子类B这里的。[/bo]
B()
{
super();
super.a();
System.out.println(aa+","+bb);
a();
}
[bo]调用这个构造函数 ,这里调用父类的构造方法。super();括号里是无参的。[/bo]
A()
{
System.out.println(aa+","+bb);
a();
}
[bo]先打印,再调用a()方法。 [/bo]
[bo]调用a()方法,在a()方法里面打印一句话。 [/bo]
void a()
{
System.out.println(aa+","+bb);
}
[bo]下面,调用父类的a()方法。 [/bo]
super.a();
[bo]调用完后,再打印一句话。 [/bo]
System.out.println(aa+","+bb);
然后,再调用B类的a()方法。
a();
void a()
{
System.out.println(aa+","+bb);
super.a();
}
[bo]然后,再调用 父类的a()方法[/bo]
void a()
{
System.out.println(aa+","+bb);
}
[bo]程序结束...[/bo]
[[it] 本帖最后由 谁与争疯 于 2008-2-14 21:57 编辑 [/it]]
static int aa=10;
static{
System.out.println(aa);
}
[bo]然后,就到下面的[/bo]
static int aa=8;
static{
System.out.println(aa);
}
[bo]因为static是程序解析时,先执行一遍的,也是唯一一遍,所以以后再执行到,它也不会再重新分配存储空间。并且它的空间是唯一的,也就是说,上面的两个aa,其实是一个。[/bo]
[bo]然后程序从这里再开始[/bo]
public class Test {
public Test() {
}
public static void main(String[] args)
{
new B();
}
}
[bo]从这里开始,实例化一个类,B 也就是 new B();[/bo]
[bo]这里是实例化的程序部份,也就是子类B这里的。[/bo]
B()
{
super();
super.a();
System.out.println(aa+","+bb);
a();
}
[bo]调用这个构造函数 ,这里调用父类的构造方法。super();括号里是无参的。[/bo]
A()
{
System.out.println(aa+","+bb);
a();
}
[bo]先打印,再调用a()方法。 [/bo]
[bo]调用a()方法,在a()方法里面打印一句话。 [/bo]
void a()
{
System.out.println(aa+","+bb);
}
[bo]下面,调用父类的a()方法。 [/bo]
super.a();
[bo]调用完后,再打印一句话。 [/bo]
System.out.println(aa+","+bb);
然后,再调用B类的a()方法。
a();
void a()
{
System.out.println(aa+","+bb);
super.a();
}
[bo]然后,再调用 父类的a()方法[/bo]
void a()
{
System.out.println(aa+","+bb);
}
[bo]程序结束...[/bo]
[[it] 本帖最后由 谁与争疯 于 2008-2-14 21:57 编辑 [/it]]
论坛是我家灌水靠大家