Konstruktor i niejawne super()

Konstruktor i niejawne super()
D3X
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 187
0
Kopiuj
package nazwa;

public class Animal {
    public Animal(int age) {
        System.out.print("Animal");
    }
}
Kopiuj
package zwierze;

import nazwa.Animal;

public class Lion extends Animal {

    public Lion(int age) {
        System.out.print("Lion ");
    }

    public static void main(String[] args) {
        new Animal(5);

    }
}

I to się nie kompiluje. Jak rozumiem to jest przez to, że kompilator domyślnie dodaje w tym konstruktorze Lion - super(); ?
I dopiero po jawnym wywołaniu super(6); - zadziała.
Albo po dodaniu do Animala bezargumentowego konstruktora?

Czy dobrze to rozumiem?

SW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 426
2

W Animal dodales konstruktor inny niz bezargumentowy przez co defaultowego bezargumentowego juz nie ma jesli go jawnie nie zdefiniujesz.

W Lion niejawnie chce dodac super() (bezargumentowy) ale takiego nie ma bo Animal takiego nie ma.

Podsumowujac: dobrze rozumiesz ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.