以下に例を示します。
親クラス
パブリッククラスの父親 {
static{//静的ブロック
System.out.println("父親の STATIC フリー ブロックが実行中");
}
{//非静的ブロック
System.out.println("父親のフリーブロック実行中");
}
パブリックファーザー(){
System.out.println("父親のコンストラクターが実行中");
}
}
サブクラス
{//非静的ブロック
System.out.println("息子のフリーブロックが実行中");
}
パブリック息子() {
// TODO 自動生成されたコンストラクター スタブ
System.out.println("息子のコンストラクターが実行中");
}
}
main関数が配置されているクラス
公開授業テスト{
public static void main(String[] args) {
クラスf;
試す {
System.out.println("----------父をロードする前--------");
f=Class.forName("フリーブロック.ファーザー");
System.out.println("--------アフターロード父---------");
System.out.println("--------最初の親オブジェクトの前--------");
f.newInstance();
System.out.println("--------後頭の親オブジェクト--------");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
クラス s;
試す {
System.out.println("----------beforeloadson--------");
s=Class.forName("freeblock.son");
System.out.println("--------アフターロード息子--------");
System.out.println("----------beforeInitial Son object----------");
s.newInstance();
System.out.println("----------afterInitial Son オブジェクト-----------");
} catch (ClassNotFoundException e) {
e.printStackTrace();
catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
実行結果:
--------ロードファーザーの前に--------
父親の STATIC フリー ブロックランニング
--------ロードファーザーの後--------
--------最初の父親オブジェクトの前--------
お父さんのフリーブロックランニング
父親のコンストラクターが実行中
--------最初の父親オブジェクトの後--------
-------息子をロードする前に------
息子の STATIC フリーブロック実行中
--------ロード後息子------
--------最初のソノオブジェクトの前----------
お父さんのフリーブロックランニング
父親のコンストラクターが実行中
息子のフリーブロックランニング
息子のコンストラクターが実行中
--------最初の息子オブジェクトの後----------