总结:
先初始化父类的静态代码—>初始化子类的静态代码–>初始化父类的非静态代码—>初始化父类构造函数—>初始化子类非静态代码—>初始化子类构造函数
规律:
1、静态优先。
2、在1的基础上父类优先。
3、在1、2的基础上构造函数最后。
练习及实例
写出以下代码的运行结果
class A {
public A() {
System.out.println("class A");
}
{ System.out.println("I'm A class"); }
static { System.out.println("class A static"); }
}
public class B extends A {
public B() {
System.out.println("class B");
}
{ System.out.println("I'm B class"); }
static { System.out.println("class B static");
}
public static void main(String[] args) {
new B();
}
运行结果:
class A static
class B static
I'm A class
class A
I'm B class
class B