Der Konstruktor der Superklasse

einsteigerin

Mitglied
Hallo,


ich habe nicht verstanden, wie ich die Argumente von super() aussehen müssen, wenn ich den Konstruktor der Superklasse aufrufe. Hier ist ein Beispiel:
Java:
public class Buh {
  public Buh(int i) {}
  public Buh(String s) {}
  public Buh(String s, int i){}

}
Class SohnVonBuh extends Buh {

public SohnVonBuh() {
  super("Buh");
}

public SohnVonBuh (int i){
  super("Fred");
}

public SohnVonBuh(String s) {
  super("Buh");
}
public SohnVonBuh(int i, String s) {
  super(42);
}
public SohnVonBuh(int i, String s) {
 
}
public SohnVonBuh(String a, String b, String c) {
  super(a,b);
}
public SohnVonBuh(int i, int j) {
  super("Mann", j);
}
public SohnVonBuh(int i, int x, int y) {
  super(i, "Stern");
}
}

Würde mir bitte Jemand erklären, welche diese Aufrufe zulässig sind und welche nicht, und warum?

Besten Dank.
 
Ausprobieren?
Die Super Klasse kennt nur drei Konstruktoren:
Code:
( int )
,
Code:
( String )
,
Code:
( String, int)
entsprechend sind nur solche super(...) Aufrufe möglich.
 
Etwas ergänzend, für den Fall das in dem Punkt Unklarheit bestand: Die Konstruktoren einer abgeleiteten Klasse haben herzlich wenig mit den Konstruktoren der Superklasse zu tun. Ganz egal was für Parameter die SohnVonBuh-Konstruktoren verlangen, du kannst dort immer nur einen beliebigen der drei vorhandenen Buh-Konstruktoren aufrufen (int, String oder String+int - oder natürlich auch gar keinen). Und die kannst du freilich auch mit beliebigen Werten füttern.
 
Ich habe bitte noch eine Frage, eine der möglichen Ausgaben für dieses Beispiel lautet:


%javac SohnVonBuh.java

cannnot resolve symbol

symbol : constructor Buh()


Ich weiss nicht zu welchem Aufruf ich diese Meldung zuordnen soll?
 
Zeile 24. Java ruft immer am Anfang des Konstruktors [c]super()[/c] auf - ausser man deklariert ein eigenes super(). Da die Oberklasse aber keinen parameterlosen Konstruktor (default constructor) besitzt, kann dieser nicht aufgerufen werden und es muss manuell ein super() passend zu den 3 Möglichkeiten hinzugefügt werden.
 

Zurück
Oben