hi, ich versuch grad herauszufinden, was der folgende code macht. die aufgabenstellung dazu lautet:
a)
gegeben sei das folgende JAVA-Programm. Dieses Programm gibt 6 Zeilen Text in der Form v[0]: Unterklasse(Oberklasse(name= Attribut(name1)), name=2) auf der Konsole aus. Tragen Sie die Ausgabe an den markierten Stellen in den Kommentaren ein:
class Verwendet
{
int a;
Verwendet (int i)
{
a = i;
}
public String toString()
{
return "Verwendet(a=" + a + ")";
}
}
class Ober
{
Verwendet verw;
Ober(Ober o)
{
verw = o.verw;
}
Ober (int i)
{
verw = new Verwendet(i);
}
public String toString()
{
return "Ober(verw=" +verw+ ")";
}
void f(int x)
{
verw.a += x;
}
Ober kopie()
{
return new Ober(this);
}
}
class Unter extends Ober
{
int b = 4;
Unter()
{
super(100);
}
Unter(Unter o)
{
super(o);
b = o.b;
}
Unter(int i)
{
this();
b = i+5;
}
public String toString()
{
return "Unter(" + super.toString() + " , b =" + b + ")";
}
void f(int x)
{
super.f(x);
b -= x;
}
void f(short x)
{
b += x;
}
Unter kopie()
{
return new Unter(this);
}
}
class Programm
{
static public void main (String [] p)
{
Ober[] v = new Ober[3];
v[0] = new Unter(15);
v[1] = v[0].kopie();
System.out.println("v[0] : " + v[0]);
System.out.println("v[1] : " + v[1]);
v[0].f(1);
System.out.println("v[0] : " + v[0]);
System.out.println("v[1] : " + v[1]);
v[1].f((short)2);
System.out.println("v[0] : " + v[0]);
System.out.println("v[1] : " + v[1]);
}
}
ich habe den code mal auf der konsole ausgeben lassen, und dann kommt folgendes raus:
v[0] : Unter(Ober(verw = Verwendet(a=100)) , b = 20;
v[1] : Unter(Ober(verw = Verwendet(a=100)) , b = 20;
v[0] : Unter(Ober(verw = Verwendet(a=101)) , b = 19;
v[1] : Unter(Ober(verw = Verwendet(a=101)) , b = 20;
v[0] : Unter(Ober(verw = Verwendet(a=103)) , b = 19;
v[1] : Unter(Ober(verw = Verwendet(a=103)) , b = 18;
also bis zun letzten beiden system.out.println-befehlen versteh ich alles…aber danach nichts mehr. was passiert zum beispiel in der zeile in der v[1].f((short)2); steht ?? da ruft doch v[1] die methode f((short)2) der Klasse „Unter“ auf. aber warum haben a=103 und b = 19, und anschließend die werte a = 103 und b = 18 ?
wenn mir das jmd. vtl erklären, was da genau vorgeht, dann wäre ich sehr froh…