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 代码!