Lösungen - Lehr- und Forschungsgebiet Informatik 2
Lösungen - Lehr- und Forschungsgebiet Informatik 2
Lösungen - Lehr- und Forschungsgebiet Informatik 2
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
• Zu OUT 3:<br />
Es wird a = a.toB(); ausgeführt, also wird die Methode toB() aus der<br />
Klasse A auf dem Objekt a aufgerufen. ⇒<br />
– B b = new B(x); ⇒ Aufruf des Konstruktors von B mit Argument 2<br />
⇒<br />
∗ super(-2) ⇒ x = x - 2 = 0<br />
∗ y += x ⇒ y = y + x = 3 + 0 = 3<br />
∗ x += z ⇒ x = x + 2 = 2<br />
– b.y = (int)this.y; ⇒ b.y = (int) a.y = (int) -2.0 = -2<br />
Hier wird auf der rechten Seite der Zuweisung das Attribut y aus der<br />
Klasse A betrachtet. Der double-Wert -2.0 wird explizit nach int<br />
konvertiert <strong>und</strong> als -2 dem Attribut B.y des Objektes zugewiesen,<br />
das in toB() mit b bezeichnet ist.<br />
Die folgende Anweisung return this; <strong>und</strong> die Zuweisung der Rückgabewertes<br />
von a.toB() an a bewirken, dass a nun auf in toB() erzeugte<br />
Objekt zeigt, also a.y = -2<br />
• Zu OUT 4:<br />
Es werden folgende Anweisungen ausgeführt:<br />
– B b = new B(-3); ⇒<br />
∗ super(-2) ⇒ x = x - 2 = 0<br />
∗ y += x ⇒ y = y + x = 3 + 0 = 3<br />
∗ x += z ⇒ x = x + (-3) = -3<br />
– a = b ⇒ a zeigt nun auf b.<br />
b) Das Programm beinhaltet folgende Compilierfehler:<br />
• B r = new A();<br />
Einem Objekt der UnterklasseB kann kein Objekt einer seiner Oberklassen<br />
(hier: A) zugewiesen werden.<br />
• int i = s.y;<br />
Der Wert des Attributes s.y hat den Typ double <strong>und</strong> kann ohne explizite<br />
Konvertierung nicht einer int-Variablen zugewiesen werden.<br />
• Dem implizit angelegten Konstruktor C() fehlt der implizit aufgerufene<br />
Konstruktor B() der Oberklasse.