2. 测试多个子类继承的初始化顺序,要求包含静态变量、静态代码块、非静态代码块、构造方法、成员变量。观察测试结果,总结下初始化顺序。
时间: 2023-01-31 16:01:20 浏览: 129
C++中类成员变量初始化总结
在 Java 中,子类的初始化顺序如下:
1. 首先会执行父类的静态变量和静态代码块,按照代码中出现的先后顺序执行。
2. 然后执行子类的静态变量和静态代码块,按照代码中出现的先后顺序执行。
3. 接着执行父类的非静态代码块和构造方法,按照代码中出现的先后顺序执行。
4. 最后执行子类的非静态代码块和构造方法,按照代码中出现的先后顺序执行。
举个例子:
```
class Base {
static int baseStaticField;
int baseField;
static {
System.out.println("Base static block");
}
{
System.out.println("Base block");
}
Base() {
System.out.println("Base constructor");
}
}
class Sub extends Base {
static int subStaticField;
int subField;
static {
System.out.println("Sub static block");
}
{
System.out.println("Sub block");
}
Sub() {
System.out.println("Sub constructor");
}
}
public class Main {
public static void main(String[] args) {
new Sub();
}
}
```
输出结果如下:
```
Base static block
Sub static block
Base block
Base constructor
Sub block
Sub constructor
```
总结一下,在 Java 中,类的初始化顺序是:静态变量和静态代码块 -> 非静态代码块和构造方法,且先执行父类的,再执行子类的。
阅读全文