Viga: vaikimisi konstruktori jaoks pole implitsiitset superkonstruktorit xx () määratletud.

Error Implicit Super Constructor Xx Is Undefined



public class Father { Protected String a = 'handsome' public Father(String a) { this.a = a System.out.print(a) } public void sex() { System.out.println('Male') } public class Son extends Father { private int b = 1 public Son(int b) { this.b = b } public void sex() { System.out.println('Not male or female') }

Viga: vaikimisi konstruktori jaoks pole implitsiitset superkonstruktorit xx () määratletud. Peab määratlema selgesõnalise konstruktori

Kuna teie vanemklass on määratlenud parameetriga konstruktori ja vanemklassis pole vaikimisi argumentideta konstruktorit, ei helista kompilaator teie jaoks vaikekonstruktorit.
Kui alaklass pärandub, peate oma konstruktoris otseselt helistama vanemklassi konstruktorile, et tagada vanemklassi installeerimine enne alamklassi initsialiseerimist.
Kui teil on vanemklassis konstruktor, kellel pole argumente, ei sunni alaklass kõnet, st see, mille kirjutasite, läheb läbi.
Koostaja kutsub vaikimisi teie jaoks vanemklassi konstruktori.
Algse idee kohaselt peab see olema järgmine:



public class Son extends Father { public Son(String a) { super(a) / / Display the constructor of the calling parent class, and must be the first line call }

See on õige, siis kui uus funktsioon on põhifunktsioonis instantsitud



Isa Fa = uus poeg ('')



On ilmne, et vanemklassi konstruktor on initsialiseeritud ja kui alamklass soovib praeguse funktsiooni initsialiseerida, peab ta lähtestama oma liikmemuutuja lähtuvalt konstruktorist, kes on vanemklassi juba kuvanud.