Home   Cover Cover Cover Cover
 

Verdecken von Methoden

Wenn man in einer Oberklasse eine Methode M einführt, die es in einer Unterklasse bereits gibt, dann verlangt C#, dass man M in der Unterklasse mit new verdeckt und damit ausdrückt, dass das M in der Unterklasse das M aus der Oberklasse nicht überschreibt.

Eine Alternative dazu wäre, dass man den Namen von M in der Unterklasse ändert (z.B. auf M1). Damit wäre ebenfalls ausgedrückt, dass es sich nicht um eine Überschreibung handelt.

Der Vorteil läge darin, dass man das komplexe Konzept des Verdeckens nicht bräuchte. Die dynamische Bindung wäre wesentlich einfacher zu verstehen, da dann jeder Methodenaufruf obj.M() einfach die Methode M des dynamischen Typs von obj aufriefe.

Nachteilig wäre, dass eine Änderung von M auf M1 u.U. aufwändig oder vielleicht gar nicht mehr möglich ist, da sonst zu viele andere Programme invalidiert würden. Außerdem wäre das M aus der Oberklasse nicht versteckt, sondern könnte in der Unterklasse nach wie vor verwendet werden, was u.U. nicht gewünscht ist.