Unterschied zwischen Overloading und Overriding

Bevor wir uns eingehend mit den Unterschieden zwischen Overloading und Overriding befassen, müssen wir verstehen, was sie tatsächlich sind und in welchen Szenarien sie besonders eingesetzt werden. Java-Neulinge werden häufig verwechselt, unterscheiden sich jedoch grundlegend voneinander und werden in ihren jeweiligen Szenarien verwendet. Beim Überladen von Methoden handelt es sich um mehrere Methoden mit demselben Namen, aber unterschiedlichen Signaturen. Zu den Signaturen gehören die Anzahl der Methodenparameter und der Datentyp der Parameter. Der Rückgabetyp der Methode ist in der Signatur nicht enthalten. Dies geschieht, um die Funktionalität der Wiederverwendung desselben Methodennamens und die Verbesserung der Lesbarkeit von Programmen bereitzustellen. Das Überschreiben von Methoden erfolgt im Fall der Vererbung, bei der abgeleitete Klassen die Eigenschaften von der Basisklasse erben. Dabei wird dieselbe Methode der Basisklasse in einer abgeleiteten Klasse mit demselben Parameter und Rückgabetyp definiert, um eine bestimmte Funktionalität / Implementierung dieser Methode in der abgeleiteten Klasse zu definieren.

Stellen Sie sich ein Szenario vor, in dem ein Programmierer den Bereich einer geometrischen Figur finden muss. Die Fläche jeder Figur variiert voneinander. Zum Auffinden der Fläche des Quadrats ist beispielsweise nur ein einziger Parameter 'side' erforderlich, für das Rechteck sind zwei Parameter 'length and width' erforderlich, während für den Kreis 'radius' erforderlich ist, der dezimal sein kann. Um diesen Zweck zu lösen, wird eine Methodenüberladung durchgeführt, bei der der Methodenbereich unterschiedliche Parameter und Datentypen für einen Bereich unterschiedlicher Figuren aufweist. Denken Sie an die Situation des Bankensystems, obwohl verschiedene Methoden und Verfahren für alle Mitarbeiter gleich sind, mit Ausnahme einiger Zinssätze für Normalbürger und Senioren. In diesem Fall wird Method Overriding mit unterschiedlichen Implementierungen von Methodenzinssätzen sowohl in der Normal- als auch in der Seniorenklasse verwendet, die die Basisklasse "Bankzinssätze" erben.

Head to Head Vergleich zwischen Overloading und Overriding (Infografik)

Unten ist die Top 7 Vergleich zwischen Overloading vs Overriding :

Hauptunterschiede zwischen Überladen und Überschreiben

Lassen Sie uns einige der wichtigsten Unterschiede zwischen Overloading und Overriding diskutieren:

  1. Beim Überladen von Methoden können Methoden im Methodennamen dieselben oder unterschiedliche Zugriffsspezifizierer / -modifizierer haben, wohingegen beim Überschreiben der Methode des Basisfalls (überschriebene Methode) der Zugriffsspezifizierer eingeschränkt sein muss als die Methode einer übergeordneten Klasse. Wenn beispielsweise die Methode einer Basisklasse geschützt ist, ist die untergeordnete Methode private nicht zulässig.
  2. Im Vergleich zur Leistung hat das Überladen eine bessere Leistung als das Überschreiben, da das Überladen von Methoden zur Kompilierungszeit erfolgt.
  3. Der Rückgabetyp einer Methode ist niemals Teil von method Overloading, daher spielt es keine Rolle, ob verschiedene überladene Methoden den gleichen oder einen anderen Rückgabetyp haben, während in Method Overriding der Rückgabetyp der Methoden von Eltern- und Basisklasse genau gleich sein muss .
  4. Wenn von Bindung die Rede ist, hat Overloading eine statische Bindung, während Overriding eine dynamische Bindung hat.
  5. Die von der Methode ausgelöste Ausnahme spielt in der überladenen Methode keine Rolle, wenn eine Methode eine Ausnahme auslöst. Andere überladene Methoden können / können dieselbe oder eine andere Ausnahme auslösen. Im Fall von Overriding kann Overriding-Methode (Methode in abgeleiteter Klasse) keine Ausnahme mit einer höheren Hierarchie als auslösen die überschriebene Methode (Methode in Basisklasse).
  6. Alle Bezeichner wie private, final und static können beim Überschreiben von Methoden nicht verwendet werden, wohingegen beim Überladen von Methoden alle Zugriffsbezeichner zulässig sind.

Vergleichstabelle von Overloading vs Overriding

Die folgende Tabelle fasst die Vergleiche zwischen Overloading und Overriding zusammen:

S.No. Überlastung Überschreiben
1Das Überladen von Methoden wird durchgeführt, um eine verbesserte Definition von Methoden für verschiedene Situationen zu erhalten.Das Überschreiben von Methoden wird durchgeführt, um eine bestimmte Implementierung von Methoden bereitzustellen, die in der übergeordneten Klasse definiert sind.
2Das Überladen von Methoden erfolgt in einer einzelnen Klasse, in der eine Klasse unterschiedliche Definitionen einer Methode aufweist.Das Überschreiben von Methoden erfolgt zwischen zwei Klassen, zwischen denen eine IS-A-Beziehung (Vererbung) besteht.
3Das Überladen der Methode erfolgt zur Kompilierungszeit und wird daher als Kompilierungszeit-Polymorphismus bezeichnet.Das Überschreiben von Methoden erfolgt zur Laufzeit und wird daher als Laufzeit-Polymorphismus bezeichnet.
4Die Reihenfolge der Parameter, der Datentyp und die Anzahl der Parameter müssen für das Methodenüberladen unterschiedlich sein.Die Reihenfolge der Parameter, der Datentyp und die Anzahl müssen für das Überschreiben von Methoden identisch sein.
5Der Rückgabetyp einer Methode kann beim Methodenüberladen gleich oder unterschiedlich sein. Es spielt überhaupt keine Rolle.Der Rückgabetyp einer Methode muss für den Fall des Überschreibens der Methode sowohl in der übergeordneten als auch in der untergeordneten Klasse identisch sein.
6Statische Methoden können überladen werden, dh es können verschiedene statische Methoden in derselben Klasse überladen werden.Statische Methoden können niemals überschrieben werden, dh statische Methoden in einer übergeordneten Klasse und einer Basisklasse haben keine Beziehung zwischen ihnen.
7Private und final-Methoden können in einer Klasse überladen werden, dh eine Klasse kann mehr als eine private und final-Methode überladen haben.Private und endgültige Methoden können in einer untergeordneten Klasse niemals überschrieben werden.

Beispiel für das Überladen von Methoden:

class FIgures(
public int area(int side)
(
return side*side;
)
public int area(int length, int breadth) //method overloading
(
return length*breadth;
)
public static void main(String() args)
(
Figures f = new Figures ();
System.out.println(“Area of Square “+ f.area(10));
System.out.println(“Area of Rectangle “+ f.area(12, 10));
)
)

Ausgabe:

Fläche von Platz 100
Rechteckfläche 120

Im obigen Beispiel ist die Methode 'area ()' überladen und hat in beiden überladenen Methoden unterschiedliche Parameter. Da muss die Fläche sowohl für das Quadrat als auch für das Rechteck herausfinden, jedoch mit unterschiedlichen Parametern.

Beispiel für das Überschreiben von Methoden:

class BankRates( // parent(base) class
void rates()
(
System.out.println(“Rates for normal citizen is 3.5%”);
)
)
class SeniorCItizen extends BankRates( //child class inheriting parent class
void rates() // method overriding
(
System.out.println(“Rates for senior citizens is 4.5%”);
)
)
class Bank(
public static void main(String() args)
(
SeniorCItizen sc = new BankRates(); sc.rates();
)
)

Ausgabe:

Preise für Senioren beträgt 4, 5%

Im obigen Beispiel wird die Methode 'rates ()' in der abgeleiteten Klasse 'SeniorCitizen' überschrieben, da wir die Methodensätze auch in der Klasse SeniorCitizen wollen, jedoch mit einer anderen Implementierung.

Fazit

Die obige Erklärung zeigt deutlich den Unterschied zwischen Überladen und Überschreiben und den spezifischen Szenarien, in denen diese beiden verwendet werden. Vor dem Programmieren muss man diese Kernkonzepte von Java verstehen, da sie die Grundlage vieler Dinge bilden und das Verständnis fortgeschrittener Konzepte erleichtern.

Empfohlene Artikel

Dies war ein Leitfaden für den Hauptunterschied zwischen Overloading und Overriding. Hier werden auch die wichtigsten Unterschiede zwischen Überladen und Überschreiben mit Infografiken sowie die Vergleichstabelle erläutert. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Funktionale Programmierung vs OOP
  2. Was ist das Überschreiben in JavaScript?
  3. Wie funktioniert das Überladen in PHP?
  4. Übersicht über das Überladen in C #
  5. In Java überschreiben
  6. Python-Überladung
  7. Überladen und Überschreiben in C #