class Fu
{
Fu()
{
super();
System.out.println("进入父类构造器!");
this.show();//1.这个show的运行结果是:子类 show 重写!0,num的值是0.
return;
}
void show()
{
System.out.println("重写!");
}
}
class Zi extends Fu
{
int num = 8;
Zi()
{
super();
//-->通过super初始化父类内容时,子类的成员变量并未显示初始化。等super()父类初始化完毕后,
//才进行子类的成员变量显示初始化。
System.out.println("进入子类构造器!"+num);//2.这个num的值是8.
return;
}
void show()
{
System.out.println("子类 show 重写!"+num);
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
new Zi();
}
}
//能不能理解成这样,在运行父类构造函数之前,子类成员已经默认初始化值为0了;
//如果是这样,那么我无法理解底下这个代码,如果是对象那么在调用父类构造函数之前,
//他默认初始化是什么样子的。究竟有没有默认初始化
class X {
X() {
show();//父类show
System.out.println("父类构造函数show完成");
}
//*
void show(){
System.out.println("打酱油");
}
}
class Z extends X {
Z z = new Z();//
Z() {
//super
show();//子类show
System.out.println("子类构造函数show完成");
}
//*
void show(){
System.out.println(z+"....show");
}
public static void main(String[] args) {
new Z();
}
}