Java - 扩展为什么超级变量 a 为 0

Java - extends why the super variable a is 0

请看这段代码:

class Sup {
    int a = 8;

    public void printA() {
        System.out.println(a);
    }

    Sup() {
        printA();
    }
}

public class Sub extends Sup {
    int a = 9;

    @Override
    public void printA() {
        System.out.println(a);
    }

    Sub() {
        printA();
    }

    public static void main(String[] args) {
        Sub sub = new Sub();
    }
}

结果: 控制台打印: 0 9
我知道子类会先调用超类constructor
但是,为什么是 0 9,而不是 8 9

Sup 构造函数调用 printA() 时,它执行 class SubprintA 方法(它覆盖 Sub 的同名方法=22=] Sup), 所以它 returns class Suba 变量的值仍然是 0, 因为Sub 的实例变量尚未初始化(它们仅在 Sup 构造函数完成后才初始化)。