Überschreiben vs Überladen
Die Methode Overriding und Method Overloading sind zwei Konzepte / Techniken / Features, die in einigen Programmiersprachen zu finden sind. Beide Konzepte ermöglichen es dem Programmierer, verschiedene Implementierungen für Methoden mit demselben Namen bereitzustellen. Das Überschreiben von Methoden ermöglicht es dem Programmierer, eine alternative Implementierung innerhalb einer Unterklasse für eine bereits in seiner Oberklasse definierte Methode bereitzustellen. Überladen von Methoden ermöglicht dem Programmierer, verschiedene Implementierungen für mehrere Methoden mit demselben Namen (innerhalb derselben Klasse) bereitzustellen..
Was ist überschreibend??
Wie oben erwähnt, kann eine Klasse eine Oberklasse oder eine übergeordnete Klasse in objektorientierten Programmiersprachen erweitern. Eine untergeordnete Klasse kann über eigene Methoden verfügen oder optional über eigene Implementierungen für bereits in ihrer übergeordneten Klasse (oder einer ihrer übergeordneten übergeordneten Klassen) definierte Methoden verfügen. Wenn letzteres passiert, wird es als überschreibende Methode bezeichnet. Wenn also die untergeordnete Klasse eine Methode mit derselben Signatur und demselben Rückgabetyp bereitstellt wie eine bereits in einer ihrer übergeordneten Klassen definierte Methode, wird diese Methode von der Implementierung der untergeordneten Klasse überschrieben (ersetzt) . Wenn also eine überschriebene Methode in einer Klasse vorhanden ist, muss das Laufzeitsystem entscheiden, welche Methodenimplementierung verwendet wird. Dieses Problem wird gelöst, indem Sie genau den Objekttyp betrachten, 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. 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 ermöglichen das Überschreiben von Methoden.
Was ist Überladen??
Das Überladen von Methoden ist eine Funktion, die von einigen Programmiersprachen bereitgestellt wird, um mehrere Methoden mit demselben Namen, aber 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 erstellen, jedoch mit einer anderen Methodensignatur oder einem anderen Rückgabetyp (oder beiden). Wenn Sie zum Beispiel method1 (type1 t1) und method1 (type2 t2) in derselben Klasse haben, sind sie überladen. Das System muss dann entscheiden, welche ausgeführt werden soll, wenn es aufgerufen wird. Diese Unterscheidung erfolgt durch Betrachtung des Typs der Parameter, die an die Methode übergeben wurden. Wenn das Argument vom Typ1 ist, wird die erste Implementierung aufgerufen, während es sich um den Typ2 handelt, wird die zweite Implementierung aufgerufen.
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, bestehen zwischen diesen beiden Konzepten / Techniken wesentliche Unterschiede. Zunächst bleiben die Methodenüberschreibungen immer in verschiedenen Klassen, während die Methodenüberladung in derselben Klasse bleibt. Das Überschreiben ist also nur in objektorientierten Programmiersprachen möglich, in denen Vererbung möglich ist. Überladen kann jedoch auch in einer nicht objektorientierten Sprache verfügbar sein. Mit anderen Worten, Sie überschreiben eine Methode in der Oberklasse, überladen jedoch eine Methode in Ihrer eigenen Klasse.
Ein weiterer Unterschied besteht darin, dass überschriebene Methoden den gleichen Methodennamen, die Methodensignatur und den Rückgabetyp haben. Überladene Methoden müssen sich jedoch entweder in der Signatur oder im Rückgabetyp unterscheiden (der Name sollte identisch sein). Zur Unterscheidung zwischen zwei überschriebenen Methoden wird der genaue Objekttyp verwendet, der zum Aufrufen der verwendeten Methoden-ID verwendet wird. Zur Unterscheidung zwischen zwei überladenen Methoden werden die Parametertypen verwendet. Ein weiterer wesentlicher Unterschied besteht darin, dass Überladungen zur Kompilierzeit behoben werden, während Überschreibungen zur Laufzeit behoben werden.