Was ist Methodenüberladung?

Das Überladen von Methoden ist eine Funktion in den meisten objektorientierten Programmiersprachen, in denen zwei oder mehr Methoden denselben Namen haben, jedoch unterschiedliche Parameter. Insbesondere sind die Anzahl, der Datentyp und / oder die Reihenfolge der Parameter unterschiedlich. Wenn der Code kompiliert wird, wird die richtige Methode basierend auf dem Aufruf automatisch ausgewählt. Methoden werden in einigen Programmiersprachen auch als Funktionen bezeichnet. Daher wird die Methodenüberladung manchmal als Funktionsüberladung bezeichnet.

Ein einfaches Beispiel für eine Methodenüberladung wäre eine Methode, die die Fläche eines Quadrats berechnet. Es könnte als getArea (Square s) definiert werden. Diese Methode könnte überladen werden, um zusätzlich die Fläche des Kreises durch Hinzufügen der Methode getArea (Circle c) zu berechnen.

Die Hauptanforderung für das Überladen von Methoden besteht darin, dass die Methoden denselben Namen haben. Ihre Methodensignaturen - der Methodenname, die Anzahl der Parameter und die Parameterdatentypen - sollten ansonsten eindeutig sein. Auf diese Weise kann der Compiler bestimmen, welche Methode ausgeführt werden soll.

Konstruktoren, die Methoden zum Instanziieren von Objekten, sind häufig überladen. Dies geschieht, um ein Objekt mit nicht standardmäßigen Werten zu initialisieren. Beispielsweise kann ein Mitarbeiterobjekt mit zwei Feldern (Name und Geburtsdatum oder Geburtsdatum) die folgenden überladenen Konstruktoren aufweisen: Mitarbeiter (), Mitarbeiter (Name) und Mitarbeiter (Name, Geburtsdatum). Der erste Konstruktor erstellt ein Mitarbeiterobjekt mit leeren Namens- und DOB-Feldern. Das zweite Feld legt das Namensfeld fest, lässt das Feld "dob" jedoch leer, und das dritte Feld definiert sowohl das Namens- als auch das Feld "dob".

Das Überladen von Methoden wird meistens durchgeführt, um mehr als eine Methode logisch als eine einzige Methode erscheinen zu lassen. Im getArea () - Beispiel wird dem Aufrufer eine einzige logische getArea () - Methode präsentiert, obwohl es physikalisch zwei Methoden gibt. Auf diese Weise kann getArea () erweitert werden, um mit anderen Formen - Dreiecken, Trapezen usw. - zu arbeiten, während es sich dennoch logisch als einzelne Methode darstellt.

Die Methoden sind auch überladen, um die Abwärtskompatibilität zu gewährleisten. Eine Methode, die eine komplexe Berechnung durchführt, könnte eine neue Anforderung erhalten, optional die gleiche Berechnung mit einer geringfügigen Änderung durchzuführen. Der Methode wird ein neuer Parameter hinzugefügt, der bestimmt, wie die Berechnung durchgeführt wird - auf die alte oder die neue Weise.

Um nicht alle Fälle zu finden, in denen die Methode aufgerufen wird, und den neuen Parameter hinzuzufügen, kann die Methode überladen werden. Die neue Methode hat die alte Signatur und wird von vorhandenem Code aufgerufen. Es enthält selbst keine Logik, ruft einfach die geänderte Methode auf und übergibt dem neuen Parameter den Standardwert "old way". Neuer Code ruft die geänderte Methode auf und übergibt den neuen Parameter mit dem entsprechenden Wert, der alten oder der neuen Methode.

Das Überladen von Methoden ist eine Art von Polymorphismus, bei dem dieselbe logische Methode in der Praxis auf verschiedene Arten verwendet werden kann. Das Überladen von Methoden ist nicht dasselbe wie das Überschreiben von Methoden. Beim Überschreiben von Methoden wird die Definition einer Methode in einer übergeordneten Klasse von einer untergeordneten Klasse geändert. In diesem Fall haben beide Methoden dieselbe Signatur.

ANDERE SPRACHEN

War dieser Artikel hilfreich? Danke für die Rückmeldung Danke für die Rückmeldung

Wie können wir helfen? Wie können wir helfen?