Может ли кто-нибудь объяснить вывод следующей программы? Я думал, что конструкторы инициализируются перед переменными экземпляра. Поэтому я ожидал, что выход будет "XZYY".
class X {
Y b = new Y();
X() {
System.out.print("X");
}
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Z extends X {
Y y = new Y();
Z() {
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}