子类要调用父类构造器
super();调用父类的空参构造器
在编译期间,jvm会读取每个类,然后创建一个init的初始化方法,
init方法里有通过编译得到的你写的类中的代码
按一定顺序排列
init(){
1.super();//这个还是要有的,是通过编译你构造器中的super得到的,因为每个类中都会有嘛,你是this();他就是this();你是带参数的,他就是带参数的,反正跟你构造器中的一样,如果你有很多构造器,就会创建多个init方法,每个方法第一句都是super(),或者this().或者带参数
2.静态的东西, 属性什么的就不多说了,所以在静态,代码块,非静态,构造器执行顺序中,先执行的会是静态的东西
3.非静态的属性
4.代码块,同上,反正编译的时候会识别你的类中的东西,为你排好顺序,代码块在静态的下面
5.构造器中的代码 //这里不是说访问顺序,构造器在最后面,我的理解是构造器早就编译了,在第一行的super可以体现,这里只是把你自己在构造器中写的代码放在第五位这里,比如你在构造器中给非静态赋值了,早在第四步的时候,非静态的就会有默认值,0或者null,你在构造器中再赋值,他就会变成你赋值的那个数
}
所以子类要调用父类构造器,jvm编译识别构造器,然后用init—就变成了加载静态,代码块,非静态,构造器