JAVA中对象的初始化顺序

java对象初始化顺序:静态的优先,把静态的执行完轮到父亲的普通东西和构造方法,然后才到儿子的普通东西和构造方法

1、父类静态代码块,父类静态成员变量(同级按顺序执行)
2、子类静态代码块,子类静态成员变量(同级按顺序执行)
3、父类普通代码块,父类普通成员变量(同级按顺序执行)
4、父类构造方法
5、子类普通代码块,子类普通成员变量(同级按顺序执行)
6、子类构造方法

特别说明:
静态内容只在类加载时执行一次,之后不再执行。
默认调用父类的无参构造方法,可以在子类构造方法中利用super指定调用父类的哪个构造方法。`

class Father {//这是父类
    public Father() {
        System.out.println("10、父类无参构造方法");//这是父类的无参构造方法
    }
    static {
        System.out.println("1、父类静态代码块1");//父类的第一个静态代码块
    }
    private static int a = TestClass.fatherStaticMemberVarInit();//父类的静态成员变量
    static {
        System.out.println("3、父类静态代码块2");
    }
    {
        System.out.println("7、父类普通代码块1");
    }
    private int b = TestClass.fatherMemberVarInit();//父类的普通成员变量
    {
        System.out.println("9、父类普通代码块2");
    }
    public Father(int v) {
        System.out.println("父类带参构造方法");
    }
}

class Son extends Father {
    static {
        System.out.println("4、子类静态代码块1");
    }
    private static int a = TestClass.sonStaticMemberVarInit();//子类静态成员变量
    static {
        System.out.println("6、子类静态代码块2");
    }
    {
        System.out.println("11、子类普通代码块1");
    }
    private int b = TestClass.sonMemberVarInit();//子类普通成员变量
    {
        System.out.println("13、子类普通代码块2");
    }
    public Son() {
        // super(2018);
        System.out.println("14、子类构造方法");
    }
}

class TestClass{
    public static int fatherStaticMemberVarInit() {
        System.out.println("2、父类静态成员变量");
        return 0;
    }
    public static int fatherMemberVarInit() {
        System.out.println("8、父类普通成员变量");
        return 0;
    }
    public static int sonStaticMemberVarInit() {
        System.out.println("5、子类静态成员变量");
        return 0;
    }
    public static int sonMemberVarInit() {
        System.out.println("12、子类普通成员变量");
        return 0;
    }
}

public class java对象初始化顺序 {
    public static void main(String[] args) {
        Son son1 = new Son();
        System.out.println("===================");
        Son son2 = new Son();
    }
}

执行结果截图
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/chris__x/article/details/106757738