java代碼的執行順序

比較的對象:靜態代碼塊、非靜態代碼塊、構造方法、一般方法;

 

public interface AInterface {

	public  void sayA();

	public  void sayB();

}
public class BClass implements AInterface{

	BClass(){
		System.out.println("BClass Construction method");
	}

	static{
		System.out.println("BClass static method");
	}

	{
		System.out.println("BClass Before");
	}


	@Override
	public void sayA() {
		System.out.println("BClass sayA............");

	}

	@Override
	public void sayB() {
		System.out.println("BClass sayB............");

	}

	{
		System.out.println("BClass After");
	}

}
public class CClass extends BClass{

	CClass(){
		System.out.println("CClass Construction method");
	}

	static {
		System.out.println("CClass static method");
	}

	{
		System.out.println("CClass Before");
	}


	@Override
	public void sayA() {
		System.out.println("CClass sayA............");

	}


	{
		System.out.println("CClass After");
	}

}

再來一個測試類:

public class TestDemo {

	public static void main(String[] args) {
		AInterface cClass = new CClass();

		cClass.sayA();

		cClass.sayB();
	}

}

執行結果:

BClass static method
CClass static method
BClass Before
BClass After
BClass Construction method
CClass Before
CClass After
CClass Construction method
CClass sayA............
BClass sayB............

所以我們可以得出如下的結論:

java執行的順序:父類的靜態代碼塊=>子類的靜態代碼塊=>父類的普通代碼塊=>父類的構造方法=>子類的普通代碼塊=>子類的構造方法=>子類的普通方法=>父類的普通方法;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章