属性、方法、构造方法和自由块都是类中的成员,在创建对象时,各成员的执行顺序如下:
(1)父类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
(2)子类静态成员和静态初始化块,按在代码中出现的顺序依次执行。
(3)父类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
(4)执行父类构造方法。
(5)子类实例成员和实例初始化块,按在代码中出现的顺序依次执行。
(6)执行子类构造方法。
下面是示例代码:
- package
类成员执行顺序; - public
class Test { -
public static void main(String[] args) { -
new Son(); -
} - }
- //父类Parent
- class
Parent { -
{ -
System.out.println("Parent的初始化块"); -
} -
static { -
System.out.println("Parent的static初始化块"); -
} -
-
public Parent() { -
System.out.println("Parent的构造方法"); -
} - }
- class
Son extends Parent { -
{ -
System.out.println("Son的初始化块"); -
} -
static { -
System.out.println("Son的static初始化块"); -
} -
-
public Son() { -
System.out.println("Son的构造方法"); -
} - }
上述代码的执行结果如下:
Parent的static初始化块
Son的static初始化块
Parent的初始化块
Parent的构造方法
Son的初始化块
Son的构造方法