不包含繼承時類中的靜態塊、靜態方法、非靜態方法、構造函數的執行順序?

不包含繼承時類中的靜態塊、靜態方法、非靜態方法、構造函數的執行順序:

      

<span style="font-size:18px;">package test;
/**
 * 
 * 不含有繼承時,各種發法(靜態塊,靜態方法,構造方法,普通方法)的執行順序
 * @author 
 *
 */
	public class uExtend {  
		public static void test(){
		    	System.out.println("父類--靜態方法");   //被子類的相同方法覆蓋
		    }
	    static {  
	        System.out.println("父類--靜態代碼塊");  
	    }  
	  
	    public uExtend() {  
	        System.out.println("父類--構造函數");  
	    }  
	   
	    {  
	        System.out.println("父類--非靜態代碼塊");  
	    }  
	  
	    public static void main(String[] args) {  
	    	uExtend.test();
	    	new uExtend();
	         
	         
	       
	    }  
	}  
	  
	
 運行結果:

父類--靜態代碼塊

父類--靜態方法

父類--非靜態代碼塊

父類--構造函數

總結:

        先執行靜態塊中的內容,其次判斷是否有靜態方法在new   uExtend()之前執行,如果有的話,就先執行靜態方法(在執行構造方法之前先執行靜態方法),否則直接執行非靜態方法之後執行構造方法

        如果new uExtend()方法位置在調用靜態方法之前,則靜態方法在執行完構造方法(new uExtend())之後再調用。

        

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