1.类初始化顺序
package hello;
public class a {
static{
System.out.println("静态 a");
}
public a() {
System.out.println("构造函数 a");
}
{
System.out.println("代码块 a");
}
}
控制台输出结果
静态 a
a
构造函数 a
优先级:静态代码块 -> 代码块 -> 构造函数
1.子类集成初始化顺序
public class a {
static{
System.out.println("静态函数 a");
}
public a() {
System.out.println("构造函数 a");
}
{
System.out.println("代码块 a");
}
}
class b extends a{
static{
System.out.println("静态函数 b");
}
public b() {
System.out.println("构造函数 b");
}
{
System.out.println("代码块 b");
}
}
//测试
public static void main(String[] args) {
a a=new b();
}
控制台
静态函数 a
静态函数 b
代码块 a
构造函数 a
代码块 b
构造函数 b
执行顺序:
1.父类静态函数-> 2.子类静态函数 ->
3.父类代码块->4.父类构造函数->
5.子类代码块->6.子类构造函数
可以简单的把加载顺序大体分为两层:
优先级高的:
父类构造函数,子类构造函数
优先级稍低的:
父类代码块。父类构造函数,子类代码块子类构造函数。