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: Difference between “By” and “Until” - Learn English Grammar 2024, Juli
Anonim

Überschreiben vs. Überladen

Das Überschreiben der Methode und das Überladen der Methode sind zwei Konzepte/Techniken/Merkmale, die in einigen Programmiersprachen zu finden sind. Beide Konzepte ermöglichen es dem Programmierer, unterschiedliche Implementierungen für Methoden mit demselben Namen bereitzustellen. Das Überschreiben von Methoden ermöglicht es dem Programmierer, eine alternative Implementierung innerhalb einer Unterklasse zu einer Methode bereitzustellen, die bereits in ihrer Oberklasse definiert ist. Das Überladen von Methoden ermöglicht es dem Programmierer, verschiedene Implementierungen für mehrere Methoden mit demselben Namen (innerhalb derselben Klasse) bereitzustellen.

Was wird überschrieben?

Wie oben erwähnt, kann eine Klasse in objektorientierten Programmiersprachen eine Superklasse oder eine Elternklasse erweitern. Eine Kindklasse kann ihre eigenen Methoden haben oder kann optional ihre eigenen Implementierungen von Methoden haben, die bereits in ihrer Elternklasse (oder einer ihrer großen Elternklassen) definiert sind. Wenn letzteres passiert, wird es als Methodenüberschreibung bezeichnet. Mit anderen Worten, wenn die untergeordnete Klasse eine Implementierung für eine Methode mit derselben Signatur und demselben Rückgabetyp bereitstellt wie eine Methode, die bereits in einer ihrer übergeordneten Klassen definiert ist, wird diese Methode als überschrieben (ersetzt) durch die Implementierung der untergeordneten Klasse bezeichnet. Wenn es also eine überschriebene Methode in einer Klasse gibt, muss das Laufzeitsystem entscheiden, welche Methodenimplementierung verwendet wird. Dieses Problem wird gelöst, indem man sich den genauen Objekttyp ansieht, der zum Aufrufen verwendet wird. Wenn ein Objekt der übergeordneten Klasse verwendet wird, um die überschriebene Methode aufzurufen, wird die Implementierung in der übergeordneten Klasse verwendet. Wenn es sich um ein Objekt der untergeordneten Klasse handelt, wird die Implementierung der untergeordneten Klasse verwendet. Moderne Programmiersprachen wie Java, Eifell, C++ und Python erlauben das Überschreiben von Methoden.

Was ist Überlastung?

Methodenüberladung ist eine Funktion, die von einigen Programmiersprachen bereitgestellt wird, um mehr als eine Methode mit demselben Namen, aber 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 mit einer anderen Methodensignatur oder einem anderen Rückgabetyp (oder beidem) erstellen. Wenn Sie beispielsweise method1(type1 t1) und method1(type2 t2) in derselben Klasse haben, werden sie überladen. Dann muss das System entscheiden, welche ausgeführt werden soll, wenn es aufgerufen wird. Diese Unterscheidung erfolgt anhand des Typs der an die Methode übergebenen Parameter. Wenn das Argument vom Typ1 ist, wird die erste Implementierung aufgerufen, wenn es vom Typ2 ist, wird die zweite Implementierung aufgerufen.

Was ist der Unterschied zwischen Überschreiben und Überladen?

Obwohl Methodenüberschreibung und Methodenüberladung verwendet werden, um eine Methode mit unterschiedlichen Implementierungen bereitzustellen, gibt es wesentliche Unterschiede zwischen diesen beiden Konzepten/Techniken. Zunächst einmal bleiben Subjekte der Methodenüberschreibung immer in verschiedenen Klassen, während Subjekte der Methodenüberladung in derselben Klasse bleiben. Das bedeutet, dass das Überschreiben nur in objektorientierten Programmiersprachen möglich ist, die Vererbung zulassen, 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 den gleichen Methodennamen, die gleiche Methodensignatur und den gleichen Rückgabetyp haben, aber überladene Methoden sich entweder in der Signatur oder im Rückgabetyp unterscheiden müssen (der Name sollte gleich sein). Um zwischen zwei überschriebenen Methoden zu unterscheiden, wird der genaue Objekttyp verwendet, der zum Aufrufen der Methoden verwendet wird, während zur Unterscheidung zwischen zwei überladenen Methoden die Typen der Parameter verwendet werden. Ein weiterer wichtiger Unterschied besteht darin, dass das Überladen zur Kompilierzeit aufgelöst wird, während das Überschreiben zur Laufzeit aufgelöst wird.

Empfohlen: