测试多个子类继承的初始化顺序,要求包含静态变量、静态代码块、非静态代码块、构造方法、成员变量
时间: 2023-01-31 09:01:21 浏览: 111
在多个子类继承的情况下,初始化的顺序如下:
1. 静态变量和静态代码块按照在代码中出现的顺序依次初始化。
2. 非静态代码块和成员变量按照在代码中出现的顺序依次初始化。
3. 构造方法最后被调用。
这些初始化操作是在创建对象时发生的,并且从父类到子类依次进行。也就是说,在创建子类对象之前,先会初始化父类的静态变量和静态代码块,然后初始化父类的非静态代码块和成员变量,最后调用父类的构造方法。接下来再对子类进行同样的初始化操作。
例如,假设有如下的继承关系:
```
class A {
static int a = 1;
static {
System.out.println("A静态块:" + a);
}
{
System.out.println("A非静态块:" + a);
}
int b = 2;
A() {
System.out.println("A构造方法:" + b);
}
}
class B extends A {
static int a = 3;
static {
System.out.println("B静态块:" + a);
}
{
System.out.println("B非静态块:" + a);
}
int b = 4;
B() {
System.out.println("B构造方法:" + b);
}
}
class C extends B {
static int a = 5;
static {
System.out.println("C静态块:" + a
阅读全文