next up previous contents index
Next: Die final-Kennzeichnung Up: Vererbung Previous: Dynamische Bindung

Überladen von Methoden

   

Zwei Methoden einer Klassen heißen überladen, wenn sie den gleichen Namen aber unterschiedliche Signatur haben.

Es spielt keine Rolle,

Erbt man überladene Methoden, kann man einzelne davon überschreiben, ohne die nicht überschriebenen zu verlieren (Unterschied zu C++).  

Für einen Methodenaufruf wird die Signatur der aufzurufenden Methode zur Übersetzungszeit festgelegt; die aufzurufende Methode zur Laufzeit.

Grober Ablauf der statischen und dynamischen Methodenbindung

tex2html_wrap2152

Der Ablauf der statischen und dynamischen Methodenbindung im einzelnen

tex2html_wrap2172 Wie heißt die aufzurufende Methode und in welcher Klasse (oder welchem Interface) suchen wir die passende Methoden-Definition?

tex2html_wrap2174 Welche Methodendeklarationen der Suchklasse sind anwendbar und zugreifbar? Welche von denen ist die speziellste?

Eine Methodendeklaration ist anwendbar auf einen Methodenaufruf, wenn

Eine Methodendeklaration ist zugreifbar für einen Methodenaufruf, wenn die Zugriffsrechte (Seite gif) es erlauben.

Gibt es mehrere anwend- und zugreifbare Methodendeklarationen, nimm die speziellste (die mit den ``spezialisiertesten'' Parametertypen):

   void test (Ober o1, Ober o2) { ... }
   void test (Unter u1, Ober o1) { ... }
   void test (Ober o1, Unter u1) { ... }
   void test (Unter u1, Unter u2) { ... }

Compiler-Fehlermeldungen gibt es, wenn

tex2html_wrap2176 Wir haben jetzt die Übersetzungszeit-Deklaration der aufzurufenen Methode. Die muß noch 3 Prüfungen bestehen:

tex2html_wrap2178 Welches Objekt soll die Methode ausführen?

tex2html_wrap2180 Die Argumentausdrücke werden nacheinander von links nach rechts ausgewertet.

Wenn eine dieser Auswertungen abbricht, wird keins der Argumente rechts davon ausgewertet (bzw. man merkt nichts davon) und der gesamte Methodenaufruf wird abgebrochen.

tex2html_wrap2182 Gibt es es die aufzurufende Methode aus der Übersetzungszeitdeklaration überhaupt noch und darf man auf sie zugreifen?

Der Interpretierer merkt sich das Ergebnis der Prüfung solange die betreffende Klasse geladen bleibt.

tex2html_wrap2184 Welche Methode soll ausgeführt werden?


next up previous contents index
Next: Die final-Kennzeichnung Up: Vererbung Previous: Dynamische Bindung

Peter Pfahler, 1997