title image


Smiley Lösung Re: Vererbung: Objekt von Unterklasse als Superobjekt in Superklasse
:)



Ich habs.

Also zunächst mal die Lösung:

Ja, wenn man eine Klasse erben lässt, davon Objekte benutzt in einer anderen abgeleiteten Klasse. Und dann eine Methode der Superklasse aufruft (die wiederum auch mit Supermethoden arbeitet), dann bleiben alle anderen Attribute trotzdem erhalten.



wenn ich habe:



class B {

public A get() {

return einobj; //gibt ein A oder A2 objekt zurück, je nachdem

}

}



class A2 extends A {

//irgendwelche attribute

}



class B2 extends B {

public void set(A2 obj) {

//setze ein Objekt der Klasse A

}

}





//Objekterzeugung

A2 eina2 = A2();

B2 einb2 = B2();



einb2.set(eina2);



A2 neuesa = (A2)einb2.get(); //ruft die get-Methode auf die in der Superklasse B steht



/* neuesa ist nun wirklich eine Instanz von A2. Obwohl get() nur ein A-Objekt zurückliefert.

Es wird aber ja ein A2 Objekt in der set-Methode gespeichert. Und ein A2 Objekt wird gleichzeitig (weil es ja in der Veerbungshierarchie ist) auch als A-Objekt erkannt.

Bei get() muss man dann zum Zuweisen vorher wieder zu A2 casten und man hat ein vollständiges A2 Objekt.

Es gehen also keine Attribute verloren :) */







Danke auf jeden Fall trotzdem!



Ein Objekt dürfte also nur seine "extra" Attribute verlieren, wenn ich es zur Superklasse caste. Das ist hier nicht der Fall, hier wird nur weitergereicht:





A <-benutzt- B

^ ^

| |

| |

A2 <-benutzt- B2







Das soll die Veerbungshierarchie darstellen.

A2 erbt von A; B2 erbt von B.

In B wird A benutzt;

In B2 wird A2 benutzt.



1 - Speicher Obj. A2 in B2.

2 - Rufe über B2 Supermethode aus B auf, die A zurückliefert.

3 - Caste bekommenes Objekt nach A2 (so wurde es bei 1 gespeichert)

4 - Das gecastete Objekt ist eines von Instanz A2 und hat auch noch alle A2 spezifischen Attribute





Ich habe (um das zu testen) mir eben ganz fix vier Klassen geschrieben (nur mit Name und Alter).

Daran kann man es schön sehen.

Falls jemand interessiert ist kann ich die hier rein stellen.



:)

Gruß
--------------------------------------
thrash {a} gmx {pkt} net
pgp-id: 0x71DEEF0C
Zum Posten von PHP- oder Java-Code bitte der Übersicht wegen den HTML-Tag <pre> ... </pre> und/oder <code> ... </code> verwenden!


geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: