mercredi 15 avril 2015

Polymorphie Polymorphie verstehen?

Hi Leute,



also ich habe eine frage zu Polymorphie ich kann einfach nicht genau verstehen was das ist!

In meinem Skriptum steht das irgendwie nicht verständlich und im net hab ich auch nichts verständliches gefunden.




Zitat:




1. Typfamilien

Sei A eine Klasse und B eine Unterklasse von A – dann gilt:

wo ein A-Objekt erwartet wird (Zuweisung, Parameter), darf ein

B-Objekt eingesetzt werden.

Da das B-Objekt alle Eigenschaften des A-Objekts besitzt, ist dies

sinnvoll.




Code:



Person p;

Student s = new Student(...);

p = s;

...println(p.sameName(s));






Also ist Polymorphismus ganz normale vererbung?




Zitat:




Die umgekehrte Richtung ist problematisch, da nicht sicher ist, ob

die Referenz auf ein Unterklassenobjekt zeigt!

In Java lässt sich mit Hilfe des instanceof-Operators der Typ

abfragen:


Code:



Person p;

Student s;

s = p; //compile-time error!!

s = (Student)p; //ok – aber Laufzeitfehler wenn p

//keine Referenz auf Objekt vom Typ Student ist

if (p instanceof Student)

s = (Student)p;

else

...






Hier kann ich nicht verstehen warum man das hier prüfen sollte man sieht doch auf den ersten blick das p keine subclass von student ist sondern umgekehrt bzw weiss es da man den code ja selber geschrieben hat? Bzw man könnte nachschauen ob Person von Student erbt?




Zitat:




2. Methodenaufruf und dynamische Bindung

Sei wieder B eine Unterklasse von A, und die Methode m aus A

wird in B überschrieben – dann gilt:

beim Aufruf der Methode mittels r.m(...) entscheidet der Typ des

von r referenzierten Objekts welche Version der Methode

ausgeführt wird (und nicht der Typ von r).


Code:



Person p = new Person(...);

Student s = new Student(...);

p.display(); //klar: display von Person

s.display(); //klar: display von Student

p = s;

p.display(); //display von Student



Damit werden alle Objekte einer Typfamilie gleichartig behandelt

und es sind keine explizieten Fallunterscheidungen nötig!

Es wird automatisch die richtige Version der Methode ausgewählt,

auch wenn später weitere Unterklassen von Person hinzukommen.



Hier dieser Satz was soll das heißen versteh ich nicht ?

beim Aufruf der Methode mittels r.m(...) entscheidet der Typ des

von r referenzierten Objekts welche Version der Methode

ausgeführt wird (und nicht der Typ von r).

`

Ich wäre echt sehr sehr dankbar wenn mir das jemand erklären bzw ein bisschen erläutern könnte bitte bitte need it for a test :)



lg lodi





Polymorphie Polymorphie verstehen?

0 commentaires:

Enregistrer un commentaire