Habe folgendes Programm geschrieben:
Dazu 2 Fragen:
1)
Es kommt die Ausgabe "Test aktuell".
Ich verstehe das Programm so, das mit dem super-Aufruf der Konstruktor der Superklasse aufgerufen wird. Dieser weist a="Test" zu, damit Ausgabe "Test".
Wenn ich aber super(i+j) weglasse, dürfe doch eigentlich der KOnstruktor der SUperklasse nicht aktiviert werden, oder? Trotzdem kommt bei Ausführung die Meldung "Test aktuell".
2)
Wenn ich die Main-Auführung ändere in System.out.println(sk.b), kommt die Ausgabe "0 aktuell".
Ändere ich die Zeile der SUperklasse in Superklasse(int i) {b=5}, kommt trotzdem die Ausgabe "0 aktuell", nicht "5 aktuell", weshalb?
Danke für die Antworten.
[Edit by Beni: Codetags]
Code:
class Superklasse {
String a;
int b;
Superklasse() {a="Test";}
Superklasse(int i) {b=i;}
void m() {System.out.println("aktuell");}
}
class Subklasse extends Superklasse {
Subklasse() {}
Subklasse(int i,int j) {
super(i+j);
a="nicht notwendig";
}
}
class Vererbungstest {
public static void main (String[] args) {
Subklasse sk=new Subklasse();
System.out.println(sk.a);
sk.m();
}
}
Dazu 2 Fragen:
1)
Es kommt die Ausgabe "Test aktuell".
Ich verstehe das Programm so, das mit dem super-Aufruf der Konstruktor der Superklasse aufgerufen wird. Dieser weist a="Test" zu, damit Ausgabe "Test".
Wenn ich aber super(i+j) weglasse, dürfe doch eigentlich der KOnstruktor der SUperklasse nicht aktiviert werden, oder? Trotzdem kommt bei Ausführung die Meldung "Test aktuell".
2)
Wenn ich die Main-Auführung ändere in System.out.println(sk.b), kommt die Ausgabe "0 aktuell".
Ändere ich die Zeile der SUperklasse in Superklasse(int i) {b=5}, kommt trotzdem die Ausgabe "0 aktuell", nicht "5 aktuell", weshalb?
Danke für die Antworten.
[Edit by Beni: Codetags]