超级构造函数调用顺序

Super constructor call order

在下面的示例中,class U 调用的哪个构造函数调用了 super 构造函数?没有参数的那个还是有一个参数的?

public class T{
    T(){
        System.out.println("T()");
    }
       public static void main(String[] args){
        new U();
    }
}

class U extends T{
    U(){
        this(2);
        System.out.println("U()");
    }
    
    U(int x){
        System.out.println("U(int x)");
    }
}

第一个构造函数 U() 通过 this(2) 调用调用第二个构造函数 U(int x)

第二个构造函数 U(int x) 隐式调用超级 class 构造函数 T()

这意味着两个 U 构造函数都直接或间接调用超级 class 构造函数。