class DemoClass {
public static void main(String args[]) {
System.out.println("Start");
A a=new D();
}
}
class A {
static {
System.out.println("Static A");
A c=new C();
}
public A() {
System.out.println("Constr A");
}
}
class B extends A {
static {
System.out.println("Static B");
}
public B() {
System.out.println("Constr B");
}
}
class C extends B {
static {
System.out.println("Static C");
}
public C() {
System.out.println("Constr C");
}
}
class D extends C {
static {
System.out.println("Static D");
}
public D() {
System.out.println("Constr D");
}
}
Порядок исполнения для выше код:Когда статический блок будет выполнен в JAVA при создании объекта?
Start
Static A
Constr A
Constr B
Constr C
Static B
Static C
Static D
Constr A
Constr B
Constr C
Constr D
На мой взгляд, все статические блоки должны быть выполнены первым, то только объект будет создан. Но здесь сначала создается объект «A c = new C()» в статическом блоке класса A, а затем выполняются другие статические блоки. Зачем?
Как в стороне, я подозреваю, что вы могли бы показали это с 3-х классов, или, возможно, только 2 так же, как легко - и сделал проще предоставить исчерпывающий список событий. –