类的初始化过程不懂,求大神解释

class Fu
{
Fu()
{
super();
show();
return;
}

void show()
{
    System.out.println("fu show");
}

}
class Zi extends Fu
{
int num = 8;
Zi()
{
super();
System.out.println("zi cons run...."+num);
return;
}
void show()
{
System.out.println("zi show..."+num);
}
}
class ExtendsDemo5
{
public static void main(String[] args)
{
Zi z = new Zi();
z.show();
}
}

图片说明

总的来说,你的子类复写了父类的方法,三个方面:
1、子类初始化会先进行父类初始化,有没有super()都是一样的;
2、子类复写父类方法,在实例化子类时,父类调用的show()其实调用的是子类的;
3、num一开始为0,是因为子类加载时先进行变量的内存分配,num一开始就是0,然后调用完父类构造函数后会进行变量的初始化,num=8,然后再输出就是8了。

可以看看这个解释http://coolshell.cn/articles/1106.html

看 疯狂java突破程序员基本功的16课 这本书,讲得有深度

你这代码。。。。。。。。。。。

同楼上,真不觉得这是Java 代码!