Java static变量、成员变量、构造函数 三者的初始化顺序
Java代码中父类和子类中,static变量 -- 成员变量 -- 构造函数 三者的调用先后顺序:
先初始化父类Static --> 再初始化子类的Static --> 再初始化父类的其他成员变量->父类构造方法->子类其他成员变量->子类的构造方法。
系统默认值的给予比通过等号的赋予先执行。
一个类中的static变量或成员变量的初始化顺序,是按照声明的顺序初始化的。
public class Main {
public static void main(String[] args) {
B b = new B();
}
public static class A {
public static MyClass1 myClass1 = new MyClass1();
private MyClass2 myClass2 = new MyClass2();
A(){
System.out.println("A的构造函数");
}
}
public static class B extends A {
public static MyClass3 myClass3 = new MyClass3();
private MyClass4 myClass4 = new MyClass4();
B(){
System.out.println("B的构造函数");
}
}
public static class MyClass1 {
MyClass1(){
System.out.println("MyClass1的构造函数");
}
}
public static class MyClass2 {
MyClass2(){
System.out.println("MyClass2的构造函数");
}
}
public static class MyClass3 {
MyClass3(){
System.out.println("MyClass3的构造函数");
}
}
public static class MyClass4 {
MyClass4(){
System.out.println("MyClass4的构造函数");
}
}
}
代码运行的结果是:
MyClass1的构造函数
MyClass3的构造函数
MyClass2的构造函数
A的构造函数
MyClass4的构造函数
B的构造函数
浙公网安备 33010602011771号