Unterschied zwischen Überladen und Überschreiben | Überladen vs. Überschreiben
Veröffentlicht: 2021-06-15Inhaltsverzeichnis
Einführung
Die objektorientierte Programmierung spielt in den Bereichen der Softwareentwicklung eine wichtige Rolle. Mit dieser Art der Programmierung sind mehrere Konzepte verbunden, wie Klasse, Objekt, Polymorphismus, Vererbung, Datenabstraktion, generische Programmierung und außergewöhnliche Handhabung.
Die Entwickler finden das Konzept des Polymorphismus immer sehr interessant, das Unterkonzepte wie das Überladen von Methoden, das Überschreiben von Methoden usw. hat. Um das Konzept des Polymorphismus jedoch besser zu verstehen, muss der Unterschied zwischen Überladen und Überschreiben verstanden werden.
Unterschied zwischen Methodenüberladung und Methodenüberschreibung
Es gibt viele Unterschiede zwischen dem Überladen von Methoden und dem Überschreiben von Methoden . Die Liste der Unterschiede zwischen dem Überladen und Überschreiben von Methoden in Java ist unten tabelliert:
Methodenüberladung | Methodenüberschreibung | |
1 | Das Verfahren dient der Erhöhung der Lesbarkeit des Programms. | Die Methode wird verwendet, um die Implementierung der Methode bereitzustellen, die von der Oberklasse bereitgestellt wird. |
2 | Es wird innerhalb einer Klasse durchgeführt | Tritt in zwei Klassen auf, die eine IS-A-Beziehung (Vererbung) haben. Zum Überschreiben sind die Basis- und eine untergeordnete Klasse erforderlich. |
3 | Methoden oder Funktionen müssen denselben Namen und unterschiedliche Signaturen haben. | Methoden oder Funktionen müssen den gleichen Namen und die gleichen Signaturen haben. |
4 | Die bei dieser Methode verwendeten Parameter sollten unterschiedlich sein. | Beim Methoden-Overriding sollten die gleichen Parameter verwendet werden. |
5 | Es ist ein Beispiel für Polymorphismus zur Kompilierzeit. Die Bindung des überladenden Methodenaufrufs an seine Definition erfolgt zur Kompilierzeit. | Es ist ein Beispiel für Laufzeitpolymorphismus. Die Bindung des überschriebenen Methodenaufrufs an seine Definition erfolgt zur Laufzeit. |
6 | Nur durch Änderung des Rückgabetyps kann die Methodenüberladung nicht durchgeführt werden. Der Rückgabetyp kann unterschiedlich oder gleich sein. Aber die Parameter sollten anders sein. | Der Rückgabetyp beim Überschreiben von Methoden kann derselbe oder kovariant sein. |
7 | Das Überladen von Methoden kann auf statische Methoden angewendet werden. Das bedeutet, dass eine Klasse mehr als eine statische Methode mit demselben Namen haben kann. | Das Überschreiben von Methoden kann nicht auf statische Methoden angewendet werden. |
8 | Statisches Binden wird zum Überladen von Methoden verwendet. | Dynamische Bindung wird zum Überschreiben von Methoden verwendet. |
9 | Eine bessere Leistung wird durch Methodenüberladung erreicht. | Geringere Leistung im Vergleich zum Überladen von Methoden. Der Grund dafür ist, dass die Bindung überschriebener Methoden zur Laufzeit erfolgt. |
10 | Private und final Methoden können überladen werden. Eine Klasse kann mehr als eine private/finale Methode mit demselben Namen haben. | Private und final Methoden können nicht überschrieben werden. Eine untergeordnete Klasse kann die private/final-Methode ihrer Basisklasse nicht überschreiben. |
11 | Die Vererbung kann im Falle einer Methodenüberladung erforderlich sein oder nicht. | Bei Methodenüberschreibung ist immer eine Vererbung erforderlich. |
12 | Es wird verwendet, um mehr zum Verhalten von Methoden hinzuzufügen. | Es wird verwendet, um das Verhalten bestehender Methoden zu ändern. |
13 | Beim Überladen von Methoden muss nicht mehr als eine Klasse vorhanden sein. | Beim Überschreiben von Methoden sind immer mindestens zwei Klassen erforderlich. |
14 | Wenn das Überladen abbricht, kommt der Kompilierungsfehler und ist einfach zu beheben. | Wenn Unterbrechungen überschrieben werden, kann dies zu ernsthaften Problemen in unserem Programm führen, da der Effekt zur Laufzeit sichtbar wird. |
fünfzehn | Das Überladen der Methode muss eine andere Signatur haben. | Die überschreibende Methode muss dieselbe Signatur haben. |
16 | Die Zugriffsmodifikatoren in der Überladungsmethode können beliebig oder unterschiedlich sein. | Der Zugriffsmodifikator der Unterklassenmethode muss gleich oder höher sein als der Zugriffsmodifikator der Oberklassenmethode in der überschreibenden Methode. |
17 | Ausgelöste Ausnahmen können alles im Konzept des Methodenüberladens sein. | Beim Überschreiben von Methoden können die ausgelösten ungeprüften Ausnahmen beliebig sein. Bei geprüften Ausnahmen sollte die überschreibende Methode keine Ausnahmen auslösen, die neu oder umfassender sind als die von der überschriebenen Methode deklarierten. |
18 | Der Compiler kümmert sich immer um die Methodenauflösung basierend auf dem Referenztyp. | Die JVM kümmert sich um die Methodenauflösung basierend auf dem Laufzeitobjekt. |
Lernen Sie Softwarekurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.
Was als nächstes?
Wenn Sie mehr über Full-Stack-Softwareentwicklung erfahren möchten, schauen Sie sich das Executive PG-Programm in Full-Stack-Softwareentwicklung von upGrad & IIIT-B an, das für Berufstätige konzipiert ist und mehr als 500 Stunden strenge Schulungen, mehr als 9 Projekte und mehr bietet Aufgaben, IIIT-B-Alumni-Status, praktische praktische Abschlussprojekte und Arbeitsunterstützung bei Top-Unternehmen.
Was ist Laufzeitpolymorphismus?
Laufzeitpolymorphismus ist eine Art Polymorphismus, der dynamische Typisierung beinhaltet. Das bedeutet, dass Objekte so manipuliert werden können, als wären sie ein einziger Typ. Dies ähnelt dem statischen Polymorphismus, bei dem Objekte so bearbeitet werden, als ob sie einen einzigen Typ hätten, unabhängig von ihrem zugrunde liegenden Typ. Es ist eines der fünf wichtigsten Prinzipien des Softwaredesigns. Es wird bei der objektorientierten Programmierung verwendet. Das bedeutet, dass eine Variable je nach Laufzeitbedingungen auf unterschiedliche Objekte verweisen kann. Beispielsweise kann eine Variable verwendet werden, um auf ein Dog-Objekt zu verweisen, wenn die Variable deklariert wird, aber während der Ausführung des Programms kann die Variable auf ein Cat-Objekt verweisen. Es handelt sich um eine automatische Typkonvertierung. Wenn Sie beispielsweise eine Integer-Variable i haben und ihr einen String-Wert zuweisen, wird daraus eine String-Variable.
Wie unterscheidet sich Überschreiben von Überladen?
Können wir die überladene Methode überschreiben?
Eine überladene Methode ist dieselbe wie eine reguläre (in Bezug auf Anzahl und Typ der Parameter), jedoch mit dem Unterschied, dass die überladene Methode so geschrieben ist, dass sie Parameter eines anderen Typs als die reguläre Methode akzeptieren kann. Sie können eine überladene Methode genauso überschreiben wie eine normale Methode.