JAVA:父类与子类中static静态块与初始化块的运行顺序
在class文件在编译的时候静态块和初始化块被调用的位置是不同的。
类加载的时候调用静态块→静态块只能初始化静态属性
解析的时候调用初始化块→初始化块所有属性都能初始化
public class InitDemo {
public static void main(String[] args) {
System.out.println("第一次实例化子类:");
new sub();
System.out.println("第二次实例化子类:");
new sub();
}
}
class Super{
static {
System.out.println("父类中的静态块");
}
{
System.out.println("父类中的非静态块");
}
Super(){
System.out.println("父类中的构造方法");
}
}
class sub extends Super{
static {
System.out.println("子类中的静态块");
}
{
System.out.println("子类中的非静态块");
}
sub(){
System.out.println("子类中的构造方法");
}
}
显示: