static(静态变量、静态方法、非静态变量、非静态方法;代码块、静态代码块、构造方法;静态导入包)
在多个子类继承的情况下,初始化的顺序如下:
1. 静态变量和静态代码块按照在类中出现的先后顺序进行初始化,注意静态变量要在静态代码块之前初始化。
2. 非静态代码块按照在类中出现的先后顺序进行初始化。
3. 构造方法在最后执行。
举个例子:
```
class A {
static int x = 10; // 静态变量
static { // 静态代码块
System.out.println("静态代码块 A");
}
{ // 非静态代码块
System.out.println("非静态代码块 A");
}
A() { // 构造方法
System.out.println("构造方法 A");
}
}
class B extends A {
static int y = 20; // 静态变量
static { // 静态代码块
System.out.println("静态代码块 B");
}
{ // 非静态代码块
System.out.println("非静态代码块 B");
}
B() { // 构造方法
System.out.println("构造方法 B");
}
}
class C extends B {
static int z = 30; // 静态变量
static { // 静态代码块
System.out.println("静态代码块 C");
}
{ // 非静态代码块
System.out.println("非静态代码块 C");
}
C() { // 构造方法
System.out.println("构造方法 C");
}
}
public class Main {
public static void main(String[] args) {
C c = new C(); // 创建 C 类的对象
}
}
```
输出