homedukeOOP mit Java: Dynamisches Binden Prof. Dr. Uwe Schmidt FH Wedel

Dynamisches Binden

weiter

weiter

Spätes Binden

Polymorphie
griechisch: Vielgestaltigkeit
in OOP
Es gibt zu einer in einer Schnittstelle oder Klasse deklarierten Methode möglicherweise in beerbenden Klassen verschiedene Methodenrümpfe.
Überladen
heißt hier: Zu einem Methodennamen gibt es mehrere Methodenrümpfe
Dynamisches Binden
Bei einem Methodenaufruf wird die Berechnung des auszuführenden Methodenrumpfes zur Laufzeit in Abhängigkeit von dem Typ des Objekts gemacht.
merke
NICHT zur Übersetzungszeit in Abhängigkeit von dem Typ der Referenz.
weiter
merke
Dieses dynamische Binden wird in Java nur auf Methoden mit gleichen formalen Parameterlisten angewendet.
Beispiel
class X {
  void f() { ... }
  void g() { ... }
}
class Y extends X {
  void f() { ... }
}
class Z extends 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()// --> f aus X
x2.f()// --> f aus Y
x3.f()// --> f aus Z
 
x1.g()// --> g aus X
x2.g()// --> g aus X
x3.g()// --> g aus Z
 
x1 = x2;
x1.f()// --> f aus Y
 
x1.h()// --> Compile-Fehler
weiter
merke
Viele unterschiedliche Objekte mit unterschiedlichem internem Verhalten,
aber einheitlicher Schnittstelle.
weiter
?
Verständlichkeit
weiter
gut
Flexibilität
weiter
merke
jeder Methodenaufruf enthält einen berechneten Unterprogrammaufruf.
weiter
?
Laufzeiteffizienz
weiter
merke
Eine Indirektstufe mehr ==> mehr Flexibilität, weniger Effizienz
weiter
?
Implementierung
weiter
merke
Polymorphie
bezieht sich hier auf Methoden mit gleichem Namen und gleichen Parametertypen.
Kleinstes Beispiel
für dynamisches Binden
 
class X {
  void f() { ... }
}
 
class Y extends X {
  void f() { ... }
 
X x1 = new X();
X x2 = new Y();
 
... x1.f() ...
... x2.f() ...
Beispiel
für Polymorphie, die statisch (zur Übersetzungszeit) aufgelößt wird:
 
class X {
  void f() { ... }
  void f(String s) { ... }
}
 
X x1 = ...;
... x1.f()      ...
... x1.f("abc") ...
merke
Aufrufe von Methoden mit gleichem Namen aber unterschiedlicher Parameterliste werden statisch an Hand der Anzahl der Parameter und der Typen der Parameter unterschieden.

Letzte Änderung: 14.05.2014
© Prof. Dr. Uwe Schmidt
Prof. Dr. Uwe Schmidt FH Wedel