JAvaオブジェクト初期化順序分析


最近自分のjavaの基础を固めて、多くのものがすべて忘れたことを発见して、よく学びましょう
テストコード

 
package com.hessian.client;

public class B {
	public B(){
		System.out.println(((A)this).a);
	}
	static{
		System.out.println("B-----------");
	}
}
 
 
サブクラス
  public class A extends B {
	public int a=100;
	public A(){
		System.out.println(this.a);
	}
	static{
		System.out.println("a----------");
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		A a=new A(); 
	}

 
 
ダイレクトアップアウトプット結果
 
B-----------
a----------
0
100
 
 
初期化順序は、親静的サブ静的親メンバー変数親構造関数サブメンバー変数サブ構造関数であることを示します.