前者输出我明天,程序一进来直接加载InstanceCode方法,但是我也有些费解,为什么在Static方法中,先输出的是"StaticCode构造代码块呢"?你如果懂了麻烦也告诉我一声吧!,然后我给你发一个也是这样的执行程序.你看看
希望对你有帮助!
class Fu
{
static
{
System.out.println("父类静态代码块");
}
{
System.out.println("父类构造代码块");
}
Fu()
{
System.out.println("父类构造方法");
}
}
class Zi extends Fu
{
static
{
System.out.println("子类静态代码块");
}
{
System.out.println("子类构造代码块");
}
Zi()
{
System.out.println("子类构造方法");
}
}
class ExtendsDemo
{
public static void main(String[] args)
{
Zi z = new Zi();
}
}
/*
父类静态代码块
子类静态代码块
这就是全码了!你所说的我能理解,按照这样的逻辑,首先private static StaticCode tt = new StaticCode();
这条语句就应该是先加载StaticCode这个类,所有先打印StaticCode这个类的静态代码块,接着打印它的构造代码块,最后是打印它的构造函数里面的内容;紧接着private InstanceCode In = new InstanceCode();这条语句创建一个InstanceCode类,那么再依次执行该类的静态代码块、构造代码块和构造函数里的内容;可是打印出来的结果是想发的,先打印InstanceCode这个类的相关内容,最后才执行StaticCode类的静态代码块。有点匪夷所思