Почему один конструктор родительского класса вызывается с параметром, а все последующие за ним без?
Хотелось бы узнать, с чем связана такая последовательность вызова конструкторов. Почему именно один конструктор вызывается с параметром, а все последующие за ним конструкторы родительских классов -- без параметра?
Код:
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");
}
}