Polymorphismus ◦ Zusammenfassung ◦ ?

Unter Polymorphismus versteht man ...

- die Fähigkeit einer Variablen zur Laufzeit auf Objekte beliebigem Typs verweisen zu können

- die Fähigkeit einer Prozedur Argumente verschiedener Typen entgegennehmen zu können.

In beiden Fällen gibt es Situationen, in denen erst unmittelbar vor einem Prozeduraufruf entschieden werden kann, welche Prozedur ausgeführt werden soll. Das folgenden Beispiel zeigt eine solche Situation:

Klassenmodul cTestA

    Public Sub zeige()
      MsgBox "Ich bin ein Objekt vom Typ cTestA"
    End Sub

Klassenmodul cTestB

    Public Sub zeige()
      MsgBox "Ich bin ein Objekt vom Typ cTestB"
    End Sub

Standardmodul Test

    Dim Obj As Object
    If InputBox("Wählen Sie A oder B") = "A" Then
      Set Obj = New cTestA
    Else
      Set Obj = New cTestB
    End If
    Obj.zeige

Die Klassen cTestA und cTestBbesitzen beide eine Methode zeige(), die verschiedene Meldungen auf dem Bildschirm ausgeben. Die Testprozedur vereinbart eine Objektvariable des allgemeinen Objekttyps Object. Zur Laufzeit wird ihr entweder eine Instanz der ersten oder der zweiten Klasse zugewiesen. Damit steht erst unmittelbar vor Ausführung der letzten Programmzeile fest, welche der beiden zeige()-Methoden ausgeführt werden soll. Man spricht deshalb von später Bindung.

Object sollte nur verwendet werden, wenn Polymorphismus ausdrücklich erwünscht ist. Bei spezifischen Objekttypen kann der Übersetzer bereits zur Übersetzungszeit entscheiden, welche Prozedur ausgeführt werden soll. Man spricht deshalb von früher Bindung. Erstens ist die frühe Bindung effizienter als die späte, und zweitens werden beim Arbeiten mit spezifischen Objekttypen ungültige Prozeduraufrufe bereits zur Übersetzungszeit gemeldet.

©abo