例のJavaのクラスのロード順序およびシーケンス(デモプログラム)

A、メイン関数オブジェクト・インスタンス

package com.learn;

public class Father {

    //静态变量
    public static int num_1 = 1;

    //静态代码块
    static {
        //判断静态变量和静态代码块的执行顺序
        System.out.println("Father类的静态变量" + num_1);
        System.out.println("Father类的静态代码块");
    }

    //普通变量
    public int num_2 = 2;

    //匿名代码块
    {
        System.out.println("Father类的普通变量=" + num_2);
        System.out.println("Father类的匿名代码块");
    }

    //构造函数
    public Father() {
        System.out.println("Father类的构造函数");
    }

}

サブクラス

package com.learn;

public class Son extends Father{

    //静态变量
    public static int num_3 = 3;

    //静态代码块
    static {
        //判断静态变量和静态代码块的执行顺序
        System.out.println("Son类的静态变量" + num_3);
        System.out.println("Son类的静态代码块");
    }

    //普通变量
    public int num_4 = 4;

    //匿名代码块
    {
        System.out.println("Son类的普通变量=" + num_4);
        System.out.println("Son类的匿名代码块");
    }

    //构造函数
    public Son() {
        System.out.println("Son类的构造函数");
    }

    //主函数
    public static void main(String[] args) {
        Son Son = new Son();
    }
}

業績

Father类的静态变量1
Father类的静态代码块
Son类的静态变量3
Son类的静态代码块
Father类的普通变量=2
Father类的匿名代码块
Father类的构造函数
Son类的普通变量=4
Son类的匿名代码块
Son类的构造函数

二、主な機能は、インスタンス化オブジェクトがありません

//主函数
    public static void main(String[] args) {
        //Son Son = new Son();
    }

業績

Father类的静态变量1
Father类的静态代码块
Son类的静态变量3
Son类的静态代码块

結論

クラスのロード:親クラスの静的変数>コードの親クラスの静的ブロック>サブクラスの静的変数>コードのサブクラスの静的ブロックよりも大きい
クラスのインスタンス化:親クラスの非静的変数>親クラスの匿名ブロック>親クラスのコンストラクタ>サブクラス非静的変数>サブクラスブロック非static>サブクラスのコンストラクタ

おすすめ

転載: www.cnblogs.com/mlr-wjy/p/12426509.html