【发布时间】:2021-09-09 07:22:35
【问题描述】:
我知道,当我创建一个实例静态块时,首先初始化代码块,然后是我的代码的构造函数
public class Main{
public Main() {
out.println("constructor initialised");
}
static {
out.println("static block initialised");
}
{
out.println("Code block initialised");
}
public static void main(String... args) {
new Main();
}
}
这样输出
静态块初始化
代码块初始化
构造函数初始化
上面的输出清楚了我的概念,但是当我扩展这样的类时
public class Main extends Bear{
public Main() {
out.println("constructor initialised");
}
static {
out.println("static block initialised");
}
{
out.println("Code block initialised");
}
public static void main(String... args) {
new Main();
}
}
熊类
class Bear{
static {
out.println("static block initialised of bear class");
}
{
System.out.println("Code bLock initialised of bear class");
}
void run() {
out.println("running...");
}
}
输出如下:
熊类的静态块初始化
静态块初始化
熊类的代码块初始化
代码块初始化
构造函数初始化
当扩展类时,执行顺序发生了变化,我不明白为什么会出现上面的输出
【问题讨论】:
-
这里是同一个问题的链接,它会很有帮助:stackoverflow.com/q/19561332/11742268>
-
非常感谢这有助于我更清楚地理解静态关键字
标签: java inheritance constructor static polymorphism