gpt4 book ai didi

java - java中什么时候运行非静态 block ?

转载 作者:行者123 更新时间:2023-11-30 07:48:28 25 4
gpt4 key购买 nike

class parent {
parent() {
System.out.println("parent");
}
}

public class child extends parent {
{
System.out.println("non static block");
}
child() {
super();
System.out.println("idk");
}
public static void main(String[] args) {
new child();
}
}

输出:

parent
non static block
idk

我期望输出是

non static block
parent
idk

为什么非静态 block 不先运行?

最佳答案

每次构造类的对象时,都会运行非静态初始化 block 。

您可以将这些 block 视为在所有类构造函数之间共享的代码片段 - 与调用方法的初始化程序在所有构造函数之间共享的方式相同。

why didnt nonstatic block run first??

非静态 block 在类的构造函数的代码之前运行,但基类构造函数的代码之后。这就是为什么您会在基类的构造函数打印的 parent 和构造函数打印的 idk 之间看到 non static block .

关于java - java中什么时候运行非静态 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33590782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com