Nach Angabe eines Parameterkonstruktors beim Erstellen einer Klasse erstellt das System standardmäßig keinen parameterlosen Konstruktor und muss manuell selbst erstellt werden.
Beim Erstellen einer Objektinstanz einer Unterklasse wird der parameterlose Konstruktor der übergeordneten Klasse (der Standardkonstruktor) standardmäßig aufgerufen.
Wenn die übergeordnete Klasse keinen parameterlosen Konstruktor definiert, wird während der Kompilierungsstufe ein Fehler gemeldet.
Wenn die Unterklasse den Parameterkonstruktor der übergeordneten Klasse angibt, kann sie kompiliert und ausgeführt werden.
Unterklasse -Erklärung Super (ID, Stadt) zeigt, dass der Parameterkonstruktor der Elternklassen aufgerufen wird
Paket cn.lw.Testpkg;/*** @Author Wanglei 18. April 2018*/Klasse Predessor {private int id; private Streichstadt; public Predessor (int id, String City) {this.id = id; this.city = Stadt; } @Override public String toString () {return "Predessor [id =" + id + ", City =" + City + "]"; }} Klasse Nachfolger erweitert Predessor {private String -Name; privater String Sex; Public Nachfolger (String -Name, String Sex, int id, String City) {Super (ID, Stadt); this.name = name; this.sex = sex; } @Override public String toString () {return "Nachfolger [name =" + name + ", sex =" + sex + "]"; }} public class callConstructOrTest {public static void main (String [] args) {Nachfolger s2 = neuer Nachfolger ("a", "männlich", 1, "Hz"); System.out.println (S2); }}Ausgabe
Nachfolger [Name = A, Sex = männlich]
Die übergeordnete Klasse definiert keinen parameterlosen Konstruktor, und die untergeordnete Klasse erklärt nicht Super (ID, Stadt)
Public Nachfolger (String -Name, String Sex) {this.name = name; this.sex = sex;}Kompilierungsfehler
Implizite Superkonstruktor Predessor () ist undefiniert. Muss ausdrücklich einen anderen Konstruktor aufrufen
Die übergeordnete Klasse zeigt die Definition des parameterlosen Konstruktors an, die Transitivität von Methodenaufrufen
Paket cn.lw.Testpkg;/*** @Author Wanglei 18. April 2018*/Klasse Predessor {private int id; private Streichstadt; public Predessor () {System.out.println ("den Konstruktor ohne den Parameter von Predessor aufrufen"); } public Predessor (int id, String City) {this.id = id; this.city = Stadt; } @Override public String toString () {return "Predessor [id =" + id + ", City =" + City + "]"; }} Klasse Nachfolger erweitert Predessor {private String -Name; privater String Sex; public nachfolger () {System.out.println ("Der Konstruktor ohne Parameter des Nachfolgers wurde genannt"); } Public Nachfolger (String -Name, String Sex) {this.name = name; this.sex = sex; } @Override public String toString () {return "Nachfolger [name =" + name + ", sex =" + sex + "]"; }} public class callConstructOrTest {public static void main (String [] args) {Nachfolger s = neuer Nachfolger (); System.out.println (s); System.out.println ("-----------------------"); Nachfolger S2 = neuer Nachfolger ("a", "männlich"); System.out.println (S2); }}Ausgabe
Als Konstruktor ohne Parameter genannt. Als Konstruktor ohne Parameter genannt.
Nachfolger [name = null, sex = null]
--------------
Als Predessor -Konstruktor ohne Argumente bezeichnet
Nachfolger [Name = A, Sex = männlich]
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.