不包含继承时类中的静态块、静态方法、非静态方法、构造函数的执行顺序?

不包含继承时类中的静态块、静态方法、非静态方法、构造函数的执行顺序:

      

<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())之后再调用。

        

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