测试多个子类继承的初始化顺序,要求包含静态变量、静态代码块、非静态代码块、构造方法、成员变量
时间: 2023-01-31 21:01:21 浏览: 124
课堂笔记08(静态代码块-继承-对象构造-方法重写-关键字
在多个子类继承的情况下,初始化的顺序如下:
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 类的对象
}
}
```
输出
阅读全文