不会。初始化块直接复制到构造函数中。显然那里也有一个隐式的超级。所以你的例子变成
public class Foo { public Foo() { {System.out.println("Foo init");} // initializer. {System.out.println("Foo constr");} }}public class Main extends Foo { public Main() { super(); // super constructor. {System.out.println("Main init");} // initializer. {System.out.println("Main constr");} } public static void main(String[] args) { new Main(); }}这解释了您观察到的行为
Foo initFoo constrMain initMain constr



