Huhu,.. mir fehlt gerade etwas das Verständnis von vererbten konstruktoren...
kleines Codebsp:
[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(42);
}
public SohnVonBuh (int i, String s) {
}
public SohnVonBuh (String a, String b, String c) {
super(a, b);
}
public SonVonBuh (int i, int j) {
super("Mann", j);
}
public SohnVonBuh (int i, int x, int y) {
super(i, "Stern");
}
}
[/code]
Folgendes Problem:
Konstruktoren in dehnen ich super(); aufrufe .. rufen den Konstruktor der Superklasse auf. Die Codebeispiele sind aus meinem Buch und dabei sollte ich, nicht Kompilierbare Konstruktoren rausfinden und 3 Fehlermeldungen zuweisen.
Nur leider versteh ich nicht direkt wie der Compiler hier arbeitet. Ich weiß das jedes Argument gesetzt werden muss beim Aufruf.
müsste dann eigentlich
sein oder?
Wie sieht das dann bei
[Java]
public Buh (String s);
[/Java]
+
[Java]
public SohnVonBuh (int i) {
super("Fred");
}
[/Java]
Müssen die 2 Argument Typen gleich sein damit der Konstruktor super() aufrufen darf?
Ich hoffe ihr versteht wo ich da gerade nicht mitkomme und meine frage verwirrt nicht allzu sehr.
kleines Codebsp:
[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(42);
}
public SohnVonBuh (int i, String s) {
}
public SohnVonBuh (String a, String b, String c) {
super(a, b);
}
public SonVonBuh (int i, int j) {
super("Mann", j);
}
public SohnVonBuh (int i, int x, int y) {
super(i, "Stern");
}
}
[/code]
Folgendes Problem:
Konstruktoren in dehnen ich super(); aufrufe .. rufen den Konstruktor der Superklasse auf. Die Codebeispiele sind aus meinem Buch und dabei sollte ich, nicht Kompilierbare Konstruktoren rausfinden und 3 Fehlermeldungen zuweisen.
Nur leider versteh ich nicht direkt wie der Compiler hier arbeitet. Ich weiß das jedes Argument gesetzt werden muss beim Aufruf.
Java:
super("Buh");
Java:
public Buh (String s);
Wie sieht das dann bei
[Java]
public Buh (String s);
[/Java]
+
[Java]
public SohnVonBuh (int i) {
super("Fred");
}
[/Java]
Müssen die 2 Argument Typen gleich sein damit der Konstruktor super() aufrufen darf?
Ich hoffe ihr versteht wo ich da gerade nicht mitkomme und meine frage verwirrt nicht allzu sehr.