public static void main(String[] args)
{
new Zi(6);
}
这一步,开始执行zi的带参数的那个构造函数。如下:
Zi(int x)
{
this();
//super();
// super(x);
System.out.println("D zi run "+x);
}
在这个构造函数中,先调用了this(),也就是zi类中的zi()构造函数,如下:、 Zi()
{
//super();//调用的就是父类中的空参数的构造函数。
System.out.println("C zi run"+num);
}
但是,在调用这个构造函数的时候,必须先调用基类的构造函数,从而初始化基类。由于在这里没有显示的调用
基类的构造函数,所以默认调用的是基类无参数版本的那个构造函数(上面的那个super()注释),而基类的
默认构造函数入下: Fu()
{
num =10;
System.out.println("A fu run");
}
所以毫无疑问,先输出“A fu run”。
执行完这个基类的默认构造函数,然后返回到派生类zi的默认构造函数中继续执行剩下的代码,如下:
{
//super();//调用的就是父类中的空参数的构造函数。
System.out.println("C zi run"+num);
}
这时候开始执行System.out.println(“C zi run”+num) 在这个库num还没有被显示初始化为任何值,所以就初始化为默认值0
所以这里的输出为 C zi run 0.
|