Unterschied Zwischen Überschreiben Und Überladen

Unterschied Zwischen Überschreiben Und Überladen
Unterschied Zwischen Überschreiben Und Überladen

Video: Unterschied Zwischen Überschreiben Und Überladen

Video: Unterschied Zwischen Überschreiben Und Überladen
Video: Java Methoden überladen und überschreiben 2024, April
Anonim

Überschreiben gegen Überladen

Die Methode Overriding und die Methode Overloading sind zwei Konzepte / Techniken / Funktionen, die in einigen Programmiersprachen zu finden sind. Beide Konzepte ermöglichen es dem Programmierer, unterschiedliche Implementierungen für Methoden mit demselben Namen bereitzustellen. Durch das Überschreiben von Methoden kann der Programmierer eine alternative Implementierung innerhalb einer Unterklasse zu einer Methode bereitstellen, die bereits in seiner Superklasse definiert ist. Durch das Überladen von Methoden kann der Programmierer mehrere Methoden mit demselben Namen (innerhalb derselben Klasse) unterschiedlich implementieren.

Was ist Überschreiben?

Wie oben erwähnt, kann eine Klasse eine Superklasse oder eine übergeordnete Klasse in objektorientierten Programmiersprachen erweitern. Eine untergeordnete Klasse kann ihre eigenen Methoden haben oder optional ihre eigenen Implementierungen für Methoden haben, die bereits in ihrer übergeordneten Klasse (oder einer ihrer übergeordneten Klassen) definiert sind. Wenn letzteres passiert, spricht man von Methodenüberschreibung. Mit anderen Worten, wenn die untergeordnete Klasse eine Implementierung für eine Methode mit demselben Signatur- und Rückgabetyp bereitstellt wie eine Methode, die bereits in einer ihrer übergeordneten Klassen definiert wurde, wird diese Methode durch die Implementierung der untergeordneten Klasse überschrieben (ersetzt). Wenn eine Klasse eine überschriebene Methode enthält, muss das Laufzeitsystem entscheiden, welche Methodenimplementierung verwendet wird. Dieses Problem wird behoben, indem der genaue Objekttyp betrachtet wird, mit dem es aufgerufen wird. Wenn ein Objekt der übergeordneten Klasse zum Aufrufen der überschriebenen Methode verwendet wird, wird die Implementierung in der übergeordneten Klasse verwendet. In ähnlicher Weise wird die Implementierung der untergeordneten Klasse verwendet, wenn ein Objekt der untergeordneten Klasse verwendet wird. Moderne Programmiersprachen wie Java, Eifell, C ++ und Python ermöglichen das Überschreiben von Methoden.

Was ist Überladung?

Das Überladen von Methoden ist eine Funktion, die von einigen Programmiersprachen bereitgestellt wird, um mehr als eine Methode mit demselben Namen, jedoch mit unterschiedlichen Eingabe- und Ausgabetypen zu erstellen. In modernen Programmiersprachen wie Java, C #, C ++ und VB. NET ist diese Funktion verfügbar. Sie können eine Methode überladen, indem Sie eine andere Methode mit demselben Namen, aber einer anderen Methodensignatur oder einem anderen Rückgabetyp (oder beiden) erstellen. Wenn Sie beispielsweise Methode1 (Typ1 t1) und Methode1 (Typ2 t2) in derselben Klasse haben, sind sie überladen. Dann muss das System entscheiden, welches ausgeführt werden soll, wenn es aufgerufen wird. Diese Unterscheidung erfolgt anhand des Typs der Parameter, die an die Methode übergeben wurden. Wenn das Argument vom Typ 1 ist, wird die erste Implementierung aufgerufen, während, wenn es vom Typ 2 ist, die zweite Implementierung aufgerufen wird.

Was ist der Unterschied zwischen Überschreiben und Überladen?

Obwohl das Überschreiben von Methoden und das Überladen von Methoden verwendet werden, um eine Methode mit unterschiedlichen Implementierungen bereitzustellen, gibt es wesentliche Unterschiede zwischen diesen beiden Konzepten / Techniken. Erstens bleiben Fächer mit Methodenüberschreibung immer in verschiedenen Klassen, während Fächer mit Methodenüberladung innerhalb derselben Klasse bleiben. Das bedeutet, dass das Überschreiben nur in objektorientierten Programmiersprachen möglich ist, die eine Vererbung ermöglichen, während das Überladen auch in einer nicht objektorientierten Sprache verfügbar sein kann. Mit anderen Worten, Sie überschreiben eine Methode in der Superklasse, aber Sie überladen eine Methode in Ihrer eigenen Klasse.

Ein weiterer Unterschied besteht darin, dass überschriebene Methoden denselben Methodennamen, dieselbe Methodensignatur und denselben Rückgabetyp haben, überladene Methoden sich jedoch entweder in der Signatur oder im Rückgabetyp unterscheiden müssen (der Name sollte identisch sein). Um zwischen zwei überschriebenen Methoden zu unterscheiden, wird der genaue Objekttyp verwendet, der zum Aufrufen der verwendeten Methoden-ID verwendet wird, während zur Unterscheidung zwischen zwei überladenen Methoden die Typen der Parameter verwendet werden. Ein weiterer wesentlicher Unterschied besteht darin, dass das Überladen zur Kompilierungszeit behoben wird, während das Überschreiben zur Laufzeit behoben wird.

Empfohlen: