class Test2_Extends {
public static void main(String[] args) {
Zi z = new Zi();
}
}
class Fu {
static {
System.out.println("静态代码块Fu");
}
{
System.out.println("构造代码块Fu");
}
public Fu() {
System.out.println("构造方法Fu");
}
}
class Zi extends Fu {
static {
System.out.println("静态代码块zi");
}
{
System.out.println("构造代码块Zi");
}
public Zi() {
System.out.println("构造方法Zi");
}
}
我想问的是,关于这道题 构造代码块Fu ,构造方法Fu,构造代码块Zi,构造方法Zi, 老师讲的时候说的是fu类先于zi类进行初始化,所以输出顺序是 构造代码块Fu ,构造方法Fu,构造代码块Zi,构造方法Zi, 但是按照之前的一个也是继承的程序的讲法来看, 当主方法中创建对象 Zi z = new Zi(); 时,不是应该先执行Zi类构造代码块,然后执行Zi类构造方法,在Zi类构造方法的一句 是 super(); 因此去执行Fu类的构造代码块,和构造方法. 所以最后的输出结果不应该是 构造代码块Zi,构造代码块Fu ,构造方法Fu,构造方法Zi, 吗?
|
|