小编Par*_*tho的帖子

面临构造函数静态块和代码块执行顺序的问题

我知道当我创建一个实例静态块时首先初始化然后代码块然后构造函数在这里我的代码

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();
}

}
Run Code Online (Sandbox Code Playgroud)

像这样输出

静态块初始化
代码块初始化
构造函数初始化

上面的输出清除了我的概念,但是当我扩展这样的类时

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();
}
}
Run Code Online (Sandbox Code Playgroud)

熊类

class Bear{
static {
    out.println("static block initialised of bear class");
} …
Run Code Online (Sandbox Code Playgroud)

java polymorphism inheritance static constructor

3
推荐指数
1
解决办法
73
查看次数

标签 统计

constructor ×1

inheritance ×1

java ×1

polymorphism ×1

static ×1