前言
java类中关于属性、方法、构造方法和自由块都是其成员,在创建对象时,各成员的执行顺序如下:
1.父类静态成员和静态初始化块,按代码出现顺序依次执行。
2.子类静态成员和静态初始化块,按代码出现顺序依次执行。
3.父类实例成员和实例初始化块,按代码中出现顺序依次执行。
4.父类的构造方法。
5.子类实例成员和实例初始化块,按代码中出现顺序依次执行。
6.执行子类构造方法。
示例代码
父类Parent
public class Parent {@b@ @b@ {@b@ System.out.println("Parent初始化区域");@b@ }@b@ @b@ static{@b@ System.out.println("Parent的static初始化区域");@b@ }@b@ @b@ public Parent(){@b@ System.out.println("Parent的构造方法");@b@ }@b@ @b@}
子类Son
public class Son extends Parent {@b@@b@ {@b@ System.out.println("Son初始化区域");@b@ }@b@ @b@ static{@b@ System.out.println("Son的static初始化区域");@b@ }@b@ @b@ public Son(){@b@ System.out.println("Son的构造方法");@b@ }@b@ @b@}
主测试结果类TestInit
public class TestInit {@b@ /**@b@ * @param args@b@ */@b@ public static void main(String[] args) {@b@ // TODO Auto-generated method stub@b@ new Son();@b@ }@b@@b@}
输出结果为:
Parent的static初始化区域@b@Son的static初始化区域@b@Parent初始化区域@b@Parent的构造方法@b@Son初始化区域@b@Son的构造方法