G
Guest
Gast
Hallo,
ich übe gerade etwas, bin aber noch nicht so geübt...*g
Habe folgendes Pogramm:
Also die Ausgabe (erg.) 1-3 kann ich noch nachvollziehen, was aber passiert in der Zeile für //erg 4 ??
Wird erst Oberklasse aufgerufen, dann unten2 ? Also ich komme da nicht auf den Wert 11.
Eeine anschauliche Erklärung wäre sehr nett.
gruß
jonas
ich übe gerade etwas, bin aber noch nicht so geübt...*g
Habe folgendes Pogramm:
Code:
public class Oberklasse
{
int a, b;
Oberklasse() {a = 3; b = 7;}
Oberklasse(int n) {this(); b = b + n;}
void ändern() {a = 5;}
void ändern(double d) {if(d < 5.0) a = 4; else a = 5;}
}
public class Unterklasse extends Oberklasse
{
int b = 0;
int c = 0;
static int k = 5;
Unterklasse() {b = 1; c = b + 1;}
Unterklasse(int n, int m) {super(m); k = n;}
void ändern() {a = 4;}
void ändern(int n) {a = n / 2;}
}
public class Aufgabe
{
public static void main(String args[])
{
Oberklasse oben = new Oberklasse();
Unterklasse unten1 = new Unterklasse();
Unterklasse unten2 = new Unterklasse(3, 4);
System.out.println(unten1.b); //erg. 1
System.out.println(unten1.a); // erg 2
System.out.println(unten2.b); // erg 3
System.out.println(((Oberklasse)unten2).b); // erg 4
System.out.println(unten2.k); // erg 5
System.out.println(unten1.k); // erg 6
oben = unten1;
unten1.ändern();
System.out.println(unten1.a); //erg 7
oben.ändern();
System.out.println(oben.a); //erg 8
unten1.ändern(3.017);
System.out.println(unten1.a); // erg 9
oben.ändern(6);
System.out.println(oben.a); // erg 10
}
}
Also die Ausgabe (erg.) 1-3 kann ich noch nachvollziehen, was aber passiert in der Zeile für //erg 4 ??
Wird erst Oberklasse aufgerufen, dann unten2 ? Also ich komme da nicht auf den Wert 11.
Eeine anschauliche Erklärung wäre sehr nett.
gruß
jonas