mercredi 15 avril 2015
Polymorphie Polymorphie verstehen?
Posted on 03:44 by verona
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.
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.
Also ist Polymorphismus ganz normale vererbung?
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:
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?
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).
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
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?
Categories: Polymorphie Polymorphie verstehen?
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire