Почему один конструктор родительского класса вызывается с параметром, а все последующие за ним без?

Хотелось бы узнать, с чем связана такая последовательность вызова конструкторов. Почему именно один конструктор вызывается с параметром, а все последующие за ним конструкторы родительских классов -- без параметра?

Код:

public class Main {
    public static void main(String[] args) {
        Cc c = new Cc(3);
        Aa b = new Cc();
    }
}
class Aa {
    public Aa(){
        System.out.println("Aa");
    }
    public Aa(int A){
        System.out.println("Aa int");
    }
}

class Bb extends Aa{
    public Bb(){
        System.out.println("Bb");
    }
    public Bb(int B){
        System.out.println("Bb int");
    }
}

class Cc extends Bb{
    public Cc(){
        System.out.println("Cc");
    }
    public Cc(int C){
        System.out.println("Cc int");
    }
}

Вывод программы:

Aa
Bb
Cc int
Aa
Bb
Cc

Ответы (1 шт):

Автор решения: Igor

В отсутствие явного вызова super вызывается родительский конструктор без параметров.

class Bb extends Aa{
    public Bb(){
        System.out.println("Bb");
    }
    public Bb(int B){
        super(B); // !!!
        System.out.println("Bb int");
    }
}

class Cc extends Bb{
    public Cc(){
        System.out.println("Cc");
    }
    public Cc(int C){
        super(C); // !!!
        System.out.println("Cc int");
    }
}
→ Ссылка