Java代码块踩坑

Java代码块踩坑

class Father {
    static {
        System.out.println("11111111111");
    }
    {
        System.out.println("22222222222");
    }
    public Father() {
        System.out.println("33333333333");
    }
}
public class Son extends Father {
    static {
        System.out.println("44444444444");
    }
    {
        System.out.println("55555555555");
    }
    public Son() {
        System.out.println("66666666666");
    }
    public static void main(String[] args) {
        System.out.println("aaaaaaaaaa");
        System.out.println("************************");
        new Son();
        System.out.println("************************");
        new Son();
        System.out.println("************************");
        new Father();
    }
}

11111111111
44444444444
aaaaaaaaaa


22222222222
33333333333
55555555555
66666666666


22222222222
33333333333
55555555555
66666666666


22222222222
33333333333

为什么没有先输出aaaaaaaaaa,我个人认为是由于main方法在子类Son当中,Son是继承与Father类,如果要走main方法,我就肯定要先加载Son这个类,加载Son这个类,我也要加载Father这个类,然后走Father的静态代码块,再走Son的静态代码块。

你可能感兴趣的:(Java,java,servlet,开发语言)