logo

Unterschied zwischen Methodenüberladung und Methodenüberschreibung in Java

Die Unterschiede zwischen Methodenüberladung und Methodenüberschreibung in Java sind wie folgt:

Methodenüberladung



Methodenüberschreibung

Das Überladen von Methoden ist ein Polymorphismus zur Kompilierungszeit.Das Überschreiben von Methoden ist ein Laufzeitpolymorphismus.
Das Überladen von Methoden trägt dazu bei, die Lesbarkeit des Programms zu verbessern.Das Überschreiben von Methoden wird verwendet, um die spezifische Implementierung der Methode zu gewähren, die bereits von ihrer übergeordneten Klasse oder Superklasse bereitgestellt wird.
Es geschieht innerhalb der Klasse.Es wird in zwei Klassen mit Vererbungsbeziehungen durchgeführt.
Das Überladen von Methoden kann eine Vererbung erfordern oder auch nicht.Das Überschreiben einer Methode erfordert immer eine Vererbung.
Beim Überladen von Methoden müssen Methoden denselben Namen und unterschiedliche Signaturen haben.Beim Überschreiben von Methoden müssen Methoden denselben Namen und dieselbe Signatur haben.
Beim Überladen von Methoden kann der Rückgabetyp derselbe sein oder nicht, wir müssen jedoch nur den Parameter ändern.Beim Überschreiben von Methoden muss der Rückgabetyp gleich oder kovariant sein.
Statische Bindung wird für überladene Methoden verwendet.Zum Überschreiben von Methoden wird eine dynamische Bindung verwendet.
Schlechte Leistung aufgrund von Polymorphismus zur Kompilierungszeit.Es gibt eine bessere Leistung. Der Grund dafür ist, dass die Bindung überschriebener Methoden zur Laufzeit erfolgt.
Private und finale Methoden können überlastet sein.Private und finale Methoden können nicht überschrieben werden.
Die Argumentliste sollte beim Überladen von Methoden unterschiedlich sein.Die Argumentliste sollte beim Überschreiben von Methoden identisch sein.

Methodenüberladung in Java

Methodenüberladung ist ein Polymorphismus zur Kompilierungszeit . Bei der Methodenüberladung teilen sich mehrere Methoden in der Klasse denselben Methodennamen mit unterschiedlicher Signatur. Bei der Methodenüberladung kann der Rückgabetyp derselbe sein oder auch nicht, aber wir müssen den Parameter ändern, da wir in Java keine Methodenüberladung erreichen können, indem wir nur den Rückgabetyp der Methode ändern.

Beispiel für Methodenüberladung:



Java
// Java Program to Implement // Method Overloading import java.io.*; class MethodOverloadingEx {  static int add(int a, int b) { return a + b; }  static int add(int a, int b, int c)  {  return a + b + c;  }  // Main Function  public static void main(String args[])  {  System.out.println('add() with 2 parameters');  // Calling function with 2 parameters  System.out.println(add(4, 6));  System.out.println('add() with 3 parameters');  // Calling function with 3 Parameters  System.out.println(add(4, 6, 7));  } }>

Ausgabe
add() with 2 parameters 10 add() with 3 parameters 17>

Methodenüberschreibung in Java

Methodenüberschreibung ist ein Laufzeitpolymorphismus . Beim Überschreiben von Methoden stellt die abgeleitete Klasse die spezifische Implementierung der Methode bereit, die bereits von der Basisklasse oder der übergeordneten Klasse bereitgestellt wird. Beim Überschreiben von Methoden muss der Rückgabetyp derselbe oder kovariant sein (der Rückgabetyp kann in derselben Richtung wie die abgeleitete Klasse variieren).

Beispiel für das Überschreiben einer Methode:

Java
// Java Program to implement // Method Overriding import java.io.*; // Base Class class Animal {  void eat()  {  System.out.println('eat() method of base class');  System.out.println('eating.');  } } // Inherited Class class Dog extends Animal {  void eat()  {  System.out.println('eat() method of derived class');  System.out.println('Dog is eating.');  } } // Driver Class class MethodOverridingEx {  // Main Function  public static void main(String args[])  {  Dog d1 = new Dog();  Animal a1 = new Animal();  d1.eat();   a1.eat();  // Polymorphism: Animal reference pointing to Dog object  Animal animal = new Dog();    // Calls the eat() method of Dog class  animal.eat();   } }>

Ausgabe
eat() method of derived class Dog is eating. eat() method of base class eating. eat() method of derived class Dog is eating.>

Erläuterung des oben genannten Programms:



Hier können wir sehen, dass eine Methode eat() im abgeleiteten Klassennamen überschrieben wurde Hund das wird bereits durch den Basisklassennamen bereitgestellt Tier . Wenn wir die Instanz der Klasse Dog erstellen und die Methode eat() aufrufen, sehen wir, dass anstelle der Basisklassenmethode eat() nur die abgeleitete Methode eat() der Klasse ausgeführt wird. Wenn wir die Instanz der Klasse Animal erstellen und die Methode eat( aufrufen, sehen wir, dass nur die Methode eat() der abgeleiteten Klasse ausgeführt wird. )-Methode sehen wir, dass nur die Basisklassenmethode eat() anstelle der abgeleiteten Klassenmethode eat() ausgeführt wird.