Überschreiben (OOP)

Der Begriff Überschreiben (englisch override, wörtlich ‚außer Kraft setzen‘, ‚überwinden‘) beschreibt eine Technik in der objektorientierten Programmierung, die es einer abgeleiteten Klasse erlaubt, eine eigene Implementierung einer von der Basisklasse geerbten Methode zu definieren.

Das Überschreiben von Methoden ist ein zentraler Bestandteil der Polymorphie in der Objektorientierung. Das Überschreiben ist zu unterscheiden vom Überladen.

Technische Details

Beim Überschreiben ersetzt die überschreibende Methode der abgeleiteten Klasse die überschriebene Methode der Basisklasse. Die überschreibende Methode kann jedoch auch die überschriebene Methode aufrufen – ansonsten sind die überschriebenen Methoden über die überschreibende Klasse nicht mehr erreichbar.

Damit die Angabe einer Methode als Überschreiben bezeichnet werden kann, müssen einige Bedingungen erfüllt sein. Die wichtigsten Bedingungen lauten:

  • Die Methoden müssen im Typ ihrer Parameter und in der Länge der Parameterliste exakt übereinstimmen, d. h. sie müssen die gleiche Signatur haben.
  • Der Rückgabewert der Methode muss denselben Typ oder einen Subtyp dieses Typs haben wie der Rückgabewert der überschriebenen Methode (Kovarianz).
  • Die überschreibende Methode darf durch Zugriffsmodifikatoren nicht mehr in den Zugriffsrechten beschränkt sein als die überschriebene Methode. Der Zugriff darf jedoch weniger restriktiv sein.
  • Es können nur Instanzmethoden überschrieben werden, keine Klassenmethoden (statische Methoden).
  • Eine Methode gilt nur als überschrieben, wenn sie auch tatsächlich geerbt wurde. Methoden gleichen Namens und mit identischer Signatur, die aber aufgrund von Zugriffsrechten nicht geerbt wurden, gelten nicht als überschrieben.