举例:
先定义HelloA类;
class HelloA{
public HelloA(){
System.out.println ("1.HelloA的构造方法" );
}
{
System.out.println ("2.父类非静态代码块" );
}
static{
System.out.println ("3.父类静态代码块" );
}
}
在定义HelloB类,继承Hello
class HelloB extends HelloA{
public HelloB(){
System.out.println ("5.helloB构造方法" );
}
{
System.out.println ("6.子类非静态代码块" );
}
static{
System.out.println ("7.子类静态代码块" );
}
}
测试类
public class TestDome {
public static void main(String[] args) {
System.out.println ("----------start---------" );
new HelloB ();
System.out.println ("-------------分割线---------" );
new HelloB ();
System.out.println ("----------end-----------" );
}
测试结果
由次测试结果来看,运行顺序为先是main()方法中start,在初始化父类静态代码块,紧接着子类静态代码块,然后初始化父类非静态代码块,父类构造方法,子类非静态代码块,子类方法,且静态代码块只会被初始化一次。