1. 单一类中:静态变量、静态块、普通变量、普通块、构造方法;
2. 有继承的子类中:先父后子。子类的静态变量和静态块会插队在父类静态块的后面,以后才严格尊重父亲大人。
创建顺序:
1。按照顺序执行父类静态变量、静态块
2。按照顺序执行子类静态变量、静态块
3。构造父类:按照顺序执行父类的普通变量、普通块
执行父类的构造函数
4。构造子类:按照顺序执行子类的普通变量、普通块
执行子类的构造函数
package Java执行顺序总结;
public class Test1 {
public static void main(String[] args) {
//A a = new A();
B b = new B();
//A a = new B();
}
}
class A {
public static int a = 0;
public int b = 0;
static {
System.out.println("■父类 - 静态初始块 - 位置是构造函数前");
}
{
System.out.println("■父类 - 普通初始块 - 位置是构造函数前");
}
public A() {
System.out.println("■父类 - 构造函数");
}
static {
System.out.println("■父类 - 静态初始块 - 位置是构造函数后");
}
{
System.out.println("■父类 - 普通初始块 - 位置是构造函数后");
}
}
class B extends A {
public static int a = 0;
public int b = 0;
static {
System.out.println("◆子类 - 静态初始块 - 位置是构造函数前");
}
{
System.out.println("◆子类 - 普通初始块 - 位置是构造函数前");
}
public B() {
System.out.println("◆子类 - 构造函数");
}
static {
System.out.println("◆子类 - 静态初始块 - 位置是构造函数后");
}
{
System.out.println("◆子类 - 普通初始块 - 位置是构造函数后");
}
}
输出结果如下:
■父类 - 静态初始块 - 位置是构造函数前
■父类 - 静态初始块 - 位置是构造函数后
◆子类 - 静态初始块 - 位置是构造函数前
◆子类 - 静态初始块 - 位置是构造函数后
■父类 - 普通初始块 - 位置是构造函数前
■父类 - 普通初始块 - 位置是构造函数后
■父类 - 构造函数
◆子类 - 普通初始块 - 位置是构造函数前
◆子类 - 普通初始块 - 位置是构造函数后
◆子类 - 构造函数