分析下列代码的执行顺序
我们先分析下SubClass和SuperClass,SuperClass是SubClass的父类,我们知道,在子类的构造器初始化的时候,默认在第一行会有一个super()去调用父类的构造器
所以我们分析,这两个构造器的执行顺序应该是
父类>子类
也就是
superclass构造器>2
我们再来分析App类
我们发现App这个类是依赖于SubClass这个类的
就是,如果没有了SubClass这个类,连编译时期都无法通过,所以在这两个类之间应该先加载SubClass这个类,我们又知道static是一开始加载金虚拟机的,所以应该先打印1
1>superclass构造器>2
非static修饰的字段都是有现在构造其中实行的
所以我们看到的这样代码
其实相当于
所以下一个输出的应该是4
1>superclass构造器>2>4
然后再回到App类,之前说过,static是一开始就加载进虚拟机的,故下一个输出的为3,最后才会执行main方法中的system语句
故,正确的顺序应该为
1>superclass构造器>2>4>3>hello
我们来验证一下