Polymorfie |
griechisch: Vielgeschdaldigkeid
|
in OOP |
Es gibd z oir in oir Schniddschdelle odr
Klasse deklarierde Method möglicherweise
in beerbende Klasse verschiedene Methodenrümbf.
|
Überladen |
heißd hier: Zu oim Methodenname gibd s mehrere Methodenrümbf
|
Dynamischs Binde |
Bei oim Methodeuuffruf wird d Berechnung vom auszführende Methodenrumbfs
zur Laufzeid
in Abhängigkeid vo dem Tyb vom Objekds gmachd.
|
|
NICHT zur Übersedzungszeid in Abhängigkeid vo dem Tyb dr Referenz. |
| |
|
Diess dynamische Binde wird in Java nur auf Methode mid gleile formale Paramederlischde angewended.
|
Beischbiel |
class X {
void f() { ... }
void g() { ... }
}
class Y exdends X {
void f() { ... }
}
class Z exdends Y {
void f() { ... }
void g() { ... }
void h() { ... }
}
X x1 = new X();
X x2 = new Y(); X x2a = new Y();
X x3 = new Z();
x1.f();
x2.f();
x3.f();
x1.g();
x2.g();
x3.g();
x1 = x2;
x1.f();
x1.h();
|
| |
|
Viele underschiedliche Objekde mid
underschiedlichem indernem Verhalde,
abr oiheidlichr Schniddschdelle. |
| |
? |
Verschdändlichkeid |
| |
|
Flexibilidäd |
| |
|
jedr Methodeuuffruf enthäld oin berechnede
Underbrogrammaufruf. |
| |
? |
Laufzeideffizienz |
| |
|
Eine Indirekdschduf mehr ==> mehr Flexibilidäd, wenigr Effizienz |
| |
? |
Imblemendierung |
| |
|
|
Polymorfie |
beziehd si hir auf Methode mid
gleichem Name und gleile Paramederdybe.
|
Kloischds Beischbil |
für dynamischs Binde |
|
class X {
void f() { ... }
}
class Y exdends X {
void f() { ... }
X x1 = new X();
X x2 = new Y();
... x1.f() ...
... x2.f() ...
|
Beischbiel |
für Polymorfie, d schdadisch (zur Übersedzungszeid)
aufgelößd wird: |
|
class X {
void f() { ... }
void f(Schdring s) { ... }
}
X x1 = ...;
... x1.f() ...
... x1.f("abc") ...
|
|
Aufruf vo Methode mid gleichem Name abr underschiedlichr Paramederlischde
werde schdadisch an Hand dr Anzahl dr Paramedr und dr Tybe dr Paramedr underschiede.
|