class Super
{
int i=0;
public Super(String a)
{
System.out.println("A");
i=1;
}
public Super()
{
System.out.println("B");
i+=2;
}
}
class Demo extends Super
{
public Demo(String a)
{ //Super()此处含有一隐式的父类构造函数 调用了Super类中的super构造方法
System.out.println("C");
i=5;
}
public static void main(String[] args)
{
int i=4;
Super d=new Demo("A");
System.out.println(d.i);
}
}
执行主函数中的i=4后 首先输出一个B 但要注意 此时的i和d均在栈内存的主函数中 然后执行下面的i+=2 注意 此时i在方法区中执行过后i=2 然后在执行输出C的语句 然后new Demo进堆内存 i的默认初始化值为0 通过i=5赋值语句将i值置为5 将a置为A 详细情况可以看我画的图 图中对象的地址值为自己随便赋的
|
|