class A200
{
A200()
{
print();
}
void print()
{
System.out.println("A200");
}
}public class A100 extends A200
{
int i = 3;
public static void main(String[] args)
{
A100 a = new A100();
a.print();
}
void print()
{
System.out.println(i);
}
}结果是0 3
3这个好说。
这个0是怎样个流程得来的呢
为什么不执行System.out.println("A200");
而去执行System.out.println(i);
请高手帮帮忙
{
A200()
{
print();
}
void print()
{
System.out.println("A200");
}
}public class A100 extends A200
{
int i = 3;
public static void main(String[] args)
{
A100 a = new A100();
a.print();
}
void print()
{
System.out.println(i);
}
}结果是0 3
3这个好说。
这个0是怎样个流程得来的呢
为什么不执行System.out.println("A200");
而去执行System.out.println(i);
请高手帮帮忙
a.print();//这个就不用多说了,就是调用A100的函数;
{
print();
}
)的时候i尚未初始化完成,所以输出0。
第二次public static void main(String[] args)
{
A100 a = new A100();
a.print();
} 调用的时候初始化结束,所以输出3
你要是把A200的print改为私有的,就会输出A200
A200 b = new A200();
b.print();
就会多两个 A200
这样跟上面说的就符合了1