第一个博文,很激动,请大家多多指教,废话不说,直接干货。。。
方法、变量的执行顺序:
(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
浙公网安备 33010602011771号