初始化关系: 时间 早于(>) 迟于(<)
1. 基类初始化 > 子类初始化
2. 静态成员变量初始化 >非静态初始化
3. 成员变量定义初始化 > 构造函数
4. 静态成员变量只有在调用该类的任何一个函数时才初始化。
class PrintString{
PrintString(String str){
System.out.println(str);
}
}
class A{
PrintString s1=new PrintString("s1");
static PrintString s2=new PrintString("s2");
A(){
System.out.println("A Constractor");
}
PrintString s3=new PrintString("s3");
static PrintString s4=new PrintString("s4");
}
class B extends A{
PrintString s5=new PrintString("s5");
static PrintString s6=new PrintString("s6");
B(){
System.out.println("B Constractor");
}
PrintString s7=new PrintString("s7");
static PrintString s8=new PrintString("s8");
}
public class InitSequence
{
public static void main(String[] args){
new B();
//output print
/*
* s2
* s4
* s6
* s8
* s1
* s3
* A Constractor
* s5
* s7
* B Constractor
* */
}
}