Wertübergabe?

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,
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
 
R

Roar

Gast
Anonymous hat gesagt.:
Also ich komme da nicht auf den Wert 11.

weshalb :?
du initialisierst die Unterklasse mit 3, 4 der erste parameter ist hier irrelevant. du rufst den superklassenkonstruktor mit dem wert 4 auf.
dort wird b = b + n zugewisen. b ist 7 n ist 4; b = 7 + 4 = 11
 

jonas1

Neues Mitglied
Hallo,

ja, danke dir. Wie gesagt, bin da noch nicht so firm drin.
Und eine Frage hätte ich noch:

Zeile 41/42... das Erg. ist da ja "5".
Warum geht er überhaupt in die Zeile 8,
wo ich doch einen INT wert übergebe und ein Unterklasseobjekt erstellt wird,
ich hätte vermutet, dass ich mich dann in Zeile 19 befinde.

Wie kommt das??

gruß
jonas
 
R

Roar

Gast
im prinzip hast du recht, aber oben ist eine Instanz von Oberklasse. Wäre es eine Instanz von Unterklasse wäre es so wie du sagtest.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben