|
|
Die Bindung der Methoden bei der Vererbung |
|
|---|
|
|
Wer damals unter Borland/Tubo-Pascal auf die OOP stieß,
kann sich vielleicht noch an den Moment erinnern, als er lernte, wann
Objektmethoden als "virtual" zu kennzeichnen sind. Hier ein Beispiel, bereits in Python geschrieben, das unter
Turbo-Pascal eine falsche Meldung gebracht hätte: # spaete bindung (virtuelle methoden) Es wird erwartet, dass jede Klasse ihre passende Meldung
bringt. Das wird aber hier absichtlich dadurch erschwert, dass die
Meldung durch die Methode move aufgerufen wird. Diese gibt es aber
nicht
gesondert in der Klasse lkw. Daher wird die move-Methode aus der Klasse
auto die Methode meldung aufrufen (Vererbung). Bei einer statischen
Bindung würde jetzt fehlerhaft deshalb die statisch gebundene
Meldung von Auto kommen, weil die Methode move der Klasse auto
natürlich auch die zugehörige Methode meldung aufruft, was
nicht gewollt ist. Python bemerkt dieses Problem jedoch selbständig und bring die passende richtige Meldung. Damit ist gezeigt, dass die Methoden mit einer späten Bindung arbeiten. Das ist die gleiche Arbeitsweise, wie es unter TurboPascal mit dem zusätzlichen Schlüsselwort "virtual" erzwungen werden konnte.
|