第一个博文,很激动,请大家多多指教,废话不说,直接干货。。。

方法、变量的执行顺序:

  (1)执行主函数体之前就要执行的代码顺序:

父类静态变量及静态代码块->子类静态变量及静态代码块;

  (2)创建对象时执行顺序:

设置成员值为默认初始值->调用对象的构造方法(第一行默认有super()语句,直接跳到对应父类中,所以实际上相当于还没有执行该构造方法体)->直到顶层父类后,开始:先执行非静态初始化,再执行父类中对应构造方法->再到子类中执行非静态初始化和对应构造方法->直到回到对象的构造方法体。

 


package com.test;


public class Test1 extends BB{


 public static void main(String[] args)

  {   

Test1 a=new Test1(5); 
}  
int radius=1;  
{   
System.out.println("zhai "+radius);
  }    
public void draw()  
{   
System.out.println("A.draw(),radius="+radius);
 }

 public Test1(int radius)

 {  

 this.radius=radius;   System.out.println("A constructor");

 }

}


class BB

{  int radius=10;  

{   

System.out.println("zhai "+radius);

}    

public void draw()  

{   

System.out.println("B.draw(),radius="+radius);

 }

 public BB()

 {   

System.out.println("B constructor");  

 draw();  

}

}


结果:

zhai 10
B constructor
A.draw(),radius=0
zhai 1
A constructor

 

  

 

 

posted on 2016-03-04 17:22  go_chaging  阅读(843)  评论(1)    收藏  举报