Вывод будет следующим : r1 r4 pre b1 b2 r3 r2 hawk , я понимаю что все что в блоке статик выводится раньше всех т.к выполняется во время загрузки класса , но не понимаю почему r3 выводится раньше чем r2.Почему так происходит ?
class Bird {
{
System.out.print("b1 ");
}
public Bird() {
System.out.print("b2 ");
}
}
class Raptor extends Bird {
static {
System.out.print("r1 ");
}
public Raptor() {
System.out.print("r2 ");
}
{
System.out.print("r3 ");
}
static {
System.out.print("r4 ");
}
}
class Solution extends Raptor {
public static void main(String[] args) {
System.out.print("pre ");
new Solution();
System.out.println("hawk ");
}
}