Überladung vs. Überschreiben: Was ist der Unterschied?

Überschreiben und Überladen sind Konzepte, die Sie als Programmierer verstehen müssen. Diese Konzepte sind bei der Programmierung in Java unerlässlich, aber auch andere Sprachen verwenden diese Konzepte. Sie müssen den Unterschied zwischen Überladen und Überschreiben verstehen, um festzustellen, welcher Ansatz für das, was Sie erreichen möchten, am besten geeignet ist.

Polymorphismus

Polymorphismus der Computerprogrammierung

Bildnachweis an BYU-Idaho

Polymorphismus ist ein wichtiges Konzept in der objektorientierten Programmierung. Damit ist gemeint, dass ein Objekt unterschiedlich verarbeitet werden kann, je nachdem, welcher Datentyp für dieses Objekt verfügbar ist. In einigen Fällen gibt die Objektklasse an, wie das Objekt verarbeitet wird.

Polymorphismus kann entweder statisch oder dynamisch sein. Überladen ist die Technik, die Sie für statischen Polymorphismus verwenden würden, während Überschreiben der dynamische Ansatz ist.

Polymorphismus ist ein entscheidendes Konzept, da er Ihnen hilft, beim Codieren Zeit zu sparen. Ohne Polymorphismus müsste man mit mehreren unterschiedlichen Methoden arbeiten. Die Möglichkeit, verschiedene Variationen einer Methode zu erstellen und eine bestimmte Version einer Methode in Ihrem Code aufzurufen, hilft Ihnen, Ihren Code kurz und prägnant zu halten.

Was ist Überlastung?

Überlastung der Computerprogrammierung

Bildnachweis an Cubetto

Java ist eine Programmiersprache, die Ihnen die Möglichkeit gibt, eine Methode jederzeit in Ihrem Code aufzurufen, indem Sie einfach den Namen der Methode verwenden. Sie können integrierte Methoden verwenden oder eine neue Methode definieren, wenn Sie eine Aufgabe ausführen müssen, die nicht durch eine integrierte Methode abgedeckt wird.

Überlastung ermöglicht Ihnen die Verwendung eines Methodennamens und die Verknüpfung verschiedener Signaturen mit diesem Namen. Die Version der Methode, die ausgeführt wird, hängt von den verfügbaren Parametern ab.

Bei der Verwendung von Überladung in Java sind einige Regeln zu beachten. In derselben Klasse können verschiedene Versionen derselben Methode vorhanden sein.

Beim Erstellen der verschiedenen Definitionen einer Methode können Sie unterschiedliche Parametertypen verwenden, eine unterschiedliche Anzahl von Parametern verwenden und die Reihenfolge der Parameter ändern.

Überladen ist ein Konzept, das auch in C++ existiert. Sie können eine Funktion oder einen Operator überladen.

Wenn Sie eine Funktion überladen müssen, erstellen Sie zunächst zwei oder mehr Funktionen mit demselben Namen im selben Bereich. Jede Funktion muss eine andere Definition haben. Genau wie bei Java können Sie verschiedene Arten von Argumenten oder eine unterschiedliche Anzahl von Argumenten verwenden. Beachten Sie, dass Sie keine unterschiedlichen Rückgabetypen haben können.

Beachten Sie, dass der Zweck der Überladung darin besteht, verschiedene Versionen einer Methode zu erstellen, ohne das Verhalten der Methode zu ändern. Dies ist die Lösung, die Sie wählen würden, um dasselbe Verhalten auf Parametervariationen von Objekten anzuwenden. Wenn Sie ein neues Verhalten erstellen müssen, ist die Verwendung einer anderen Methode sinnvoller.

Sie können Operatoren in C++ auch überladen. Dies funktioniert nur mit integrierten Operatoren und nicht alle können überladen werden. Zu den Operatoren, die nicht überladen werden können, gehören der bedingte Operator, Elementauswahloperatoren, Objektgrößen- und Objekttypinformationsoperatoren sowie der Bereichsauflösungsoperator.

Wenn Sie eine Funktion oder einen Operator in C++ überladen, prüft Ihr Code-Compiler die verschiedenen Argumenttypen, die zum Aufrufen der Funktion oder des Operators verwendet wurden. Der Compiler wählt die Definition der Funktion oder des Operators mit Parametertypen aus, die den Daten entsprechen, die beim Aufruf der Funktion oder des Operators verwendet wurden.

Denken Sie daran, dass Überlastung das ist statischer Ansatz zum Polymorphismus. Dies bedeutet, dass beim Kompilieren des Codes die richtige Methodensignatur ausgewählt wird.

Sie können Überladung mit verschiedenen Rückgabetypen, verschiedenen Zugriffsmodifikatoren und verschiedenen aktivierten und nicht aktivierten Ausnahmen verwenden. Für die Überladung gelten weniger Einschränkungen, wenn es darum geht, die verschiedenen Versionen Ihrer Methode, Funktion oder Ihres Operators zu definieren.

Was ist Override?

Überschreibung der Computerprogrammierung

Bildnachweis an Hacker De Programación

Vorrangig ist der dynamische Ansatz des Polymorphismus. Bei dieser Methode wird zur Laufzeit die richtige Methodendefinition ausgewählt.

Der Hauptunterschied zwischen Überladung und Override besteht darin, dass Override verwendet wird, um unterschiedliche Definitionen einer Methode zu erstellen, die von einer Klasse geerbt wird. Das Überladen ist weniger restriktiv, da Sie mit dieser Methode unterschiedliche Definitionen einer Methode haben können, sodass je nach den verfügbaren Daten eine relevante Definition ausgeführt werden kann.

Das Erstellen einer Unterklasse in Java bedeutet, dass die Methoden, die für die Oberklasse gelten, von der Unterklasse geerbt werden. Durch Überschreiben haben Sie die Möglichkeit, ein neues Verhalten für die Unterklasse zu definieren, sodass die von der Oberklasse geerbte Methode nicht angewendet wird.

Override wird häufig verwendet, um von der Object-Klasse geerbte Methoden zu entfernen. Zum Beispiel die toString()-Methode wird häufig überschrieben, damit Programmierer eine neue Zeichenfolgendarstellung des Objekts erstellen können, mit dem sie arbeiten.

Beachten Sie, dass endgültige Methoden, die für die Object-Klasse gelten, nicht überschrieben werden können. Dies gilt für die Methode getClass().

Einige Methoden der Objektklasse können überschrieben werden, aber die neue Methodendefinition kann zu einem unerwünschten Ergebnis führen, wenn Sie den ursprünglichen Zweck der Methode nicht berücksichtigen. Beispielsweise generiert die Methode hashCode() eine Zahl für jedes Objekt. Dieser Hash-Code kann verwendet werden, um auf ein bestimmtes Objekt innerhalb einer Datenstruktur zu verweisen. Das Überschreiben der hashCode()-Methode bedeutet, dass Sie eine neue Möglichkeit erstellen müssen, auf jedes Objekt zu verweisen.

Überschreiben Funktioniert durch Ersetzen einer vorhandenen Methodendefinition durch eine andere, wenn ein Objekt zu einer Unterklasse gehört.

Bei der Verwendung von Override in Java müssen Sie einige Regeln beachten. Sobald Sie eine alternative Definition erstellt haben, können Sie die Originalversion mithilfe von aufrufen super Stichwort.

Beachten Sie, dass das Überschreiben nur mit Methoden funktioniert. Sie können diesen Ansatz nicht mit Konstruktoren verwenden. Außerdem funktioniert das Überschreiben nur, wenn Sie eine Architektur mit einer Oberklasse und einer oder mehreren Unterklassen haben.

Da das Überschreiben die Definition einer geerbten Methode ersetzt, können Sie es nur verwenden, wenn eine Methode geerbt ist.

Es gibt einige Einschränkungen hinsichtlich der Argumentliste der neuen Methode. Die Argumentliste der neuen Methode muss mit der Argumentliste der ursprünglichen Methode identisch sein. Sie können keine unterschiedlichen Parametertypen haben, Sie können nicht mehr oder weniger Parameter haben und Sie können die Reihenfolge der Parameter nicht ändern.

Sie können entweder denselben Rückgabetyp verwenden oder einen neuen Rückgabetyp auswählen, der als Untertyp des ursprünglichen Rückgabetyps kategorisiert ist.

Es gibt auch Einschränkungen hinsichtlich der Zugriffsebene der neuen Methode. Durch das Überschreiben können Sie keine neue Methode erstellen, die restriktiver ist. Wenn Sie eine öffentliche Methode für die Oberklasse verwendet haben, kann die überschriebene Version der Methode nicht privat sein.

Wenn sich die Unterklasse im selben Paket wie die Oberklasse befindet, können Sie eine Methode überschreiben, die nicht auf private oder final gesetzt ist. Wenn sich die Klassen jedoch in unterschiedlichen Paketen befinden, können Sie Override nur mit Methoden verwenden, die auf public oder protected gesetzt sind.

Sie sollten auch wissen, dass Sie für die neue Methode keine umfassenderen geprüften Ausnahmen verwenden können.

Wann Überladen und Überschreiben verwendet werden sollten

Wann Überladen und Überschreiben verwendet werden sollten

Bildnachweis an AOSD.net

Durch Überladen und Überschreiben sparen Sie Zeit. Mit Polymorphismus können Sie unterschiedliche Definitionen einer Methode verwenden, anstatt zwei verschiedene Methoden zu erstellen. Sie müssen Polymorphismus immer dann verwenden, wenn Sie unterschiedliche Ergebnisse für eine Methode benötigen oder Objekte mit unterschiedlichen Parametern erwarten, die möglicherweise nicht der ursprünglichen Definition einer Methode entsprechen.

Sie würden Überladung verwenden, wenn zwischen den Objekten, mit denen Sie arbeiten, keine Klassenbeziehung besteht. Überladen ist sinnvoll, wenn Sie eine Methode benötigen, die auf Objekte mit einem unterschiedlichen Parameterbereich angewendet werden kann.

Sie können Ihre neue Methodendefinition flexibler gestalten und durch Überladen können Sie eine Methode für eine Vielzahl von Objektparametern verwenden. Sie können denselben Methodennamen für Objekte mit unterschiedlichen Parametertypen, einer unterschiedlichen Anzahl von Parametern und mit Variationen in der Reihenfolge der Parameter verwenden.

Überschreiben ist die Methode, die Sie bei Objekten wählen würden, die eine Beziehung zwischen Oberklasse und Unterklasse oder untergeordneten Klassen haben. Sie können das Überschreiben nicht verwenden, wenn diese Beziehung nicht besteht.

Der Zweck des Überschreibens besteht darin, eine von der Unterklasse geerbte Methode zu entfernen oder die Funktion dieser Methode zu ändern.

Beim Überschreiben sind noch viele weitere Regeln zu beachten. Die neue Methodendefinition muss dieselben Argumente haben und verwendet entweder denselben Rückgabetyp oder eine Unterklasse des ursprünglichen Rückgabetyps. Beachten Sie, dass Sie möglicherweise keine Unterklasse des ursprünglichen Rückgabetyps verwenden können, wenn Sie mit einer Java-Version arbeiten, die älter als Java 5 ist.

Eine Überschreibung ist ein Ansatz, den Sie nur in einem bestimmten Szenario verwenden können. Auch wenn es Einschränkungen hinsichtlich der neuen Methode gibt, ist dies eine nützliche Funktionalität, da nicht alle geerbten Methoden wünschenswert sind. Überladen kann in einem breiteren Spektrum von Szenarien angewendet werden und bietet Ihnen mehr Möglichkeiten, eine Methode neu zu definieren.

Sie sollten jetzt ein besseres Verständnis für das Überladen und Überschreiben in Java haben. Mit beiden Techniken können Sie Polymorphismus für Methoden verwenden, aber jede Technik wird in einem anderen Szenario verwendet und verfügt über einen anderen Satz von Regeln.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen