Unterschied zwischen Überschreiben und Überladen

Anonim

Overriding vs. Overloading

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

Was ist Overriding?

Wie oben erwähnt, kann eine Klasse eine Superklasse oder eine Elternklasse in objektorientierten Programmiersprachen erweitern. Eine untergeordnete Klasse kann ihre eigenen Methoden haben oder optional eigene Implementierungen für Methoden haben, die bereits in ihrer übergeordneten Klasse (oder einer ihrer übergeordneten Klassen) definiert sind. Wenn das passiert, wird es als übergeordnetes Verfahren bezeichnet. Mit anderen Worten: Wenn die untergeordnete Klasse eine Implementierung einer Methode mit derselben Signatur und demselben Rückgabetyp wie eine bereits in einer ihrer übergeordneten Klassen definierte Methode bereitstellt, wird diese Methode durch die Implementierung der untergeordneten Klasse überschrieben (ersetzt). Wenn es also eine überschriebene Methode in einer Klasse gibt, muss das Laufzeitsystem entscheiden, welche Methodenimplementierung verwendet wird. Dieses Problem wird behoben, indem der genaue Objekttyp untersucht wird, der zum Aufrufen verwendet 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, wenn es ein Objekt der untergeordneten Klasse ist, das verwendet wird, die Implementierung der untergeordneten Klasse verwendet. Moderne Programmiersprachen wie Java, Eifell, C ++ und Python ermöglichen die Überschreibung von Methoden.

Was ist Überladung?

Methodenüberladen 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 beiden) erstellen. Wenn Sie zum Beispiel method1 (type1 t1) und method1 (type2 t2) innerhalb derselben Klasse haben, werden sie überladen. Dann muss das System entscheiden, welches beim Aufruf ausgeführt werden soll. Diese Unterscheidung erfolgt durch Betrachtung des Typs der Parameter, die an die Methode übergeben wurden. Wenn das Argument vom Typ 1 ist, wird die erste Implementierung aufgerufen, und wenn es vom Typ 2 ist, wird die zweite Implementierung aufgerufen.

Was ist der Unterschied zwischen Overriding und Overloading?

Zwar werden Methodenüberschreibung und Methodenüberladung verwendet, um eine Methode mit verschiedenen Implementierungen bereitzustellen, doch gibt es wesentliche Unterschiede zwischen diesen beiden Konzepten / Techniken. Zunächst bleiben die methodenüberschreitenden Subjekte immer in verschiedenen Klassen, während die Subjekte der Methodenüberladung in der gleichen Klasse bleiben. Das bedeutet, dass das Überschreiben nur in objektorientierten Programmiersprachen möglich ist, die eine Vererbung zulassen, während Überladen auch in einer nicht objektorientierten Sprache verfügbar sein kann. Mit anderen Worten überschreiben Sie eine Methode in der Super-Klasse, aber Sie überladen eine Methode innerhalb Ihrer eigenen Klasse.

Ein anderer Unterschied besteht darin, dass überschriebene Methoden denselben Methodennamen, Methodensignatur und den Rückgabetyp aufweisen. Überladene Methoden müssen sich jedoch entweder in der Signatur oder im Rückgabetyp unterscheiden (der Name sollte derselbe sein). Um zwischen zwei überschriebenen Methoden zu unterscheiden, wird der genaue Objekttyp verwendet, der zum Aufrufen der verwendeten Methoden-ID verwendet wird, wobei zur Unterscheidung zwischen zwei überladenen Methoden die Typen der Parameter verwendet werden. Ein weiterer wichtiger Unterschied besteht darin, dass die Überladung zur Kompilierungszeit aufgelöst wird, während die Überschreibung zur Laufzeit aufgelöst wird.