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>サブクラスのコンストラクタ