logo

Methodenüberladung in Java

  1. Verschiedene Möglichkeiten, die Methode zu überladen
  2. Durch Änderung der Nr. von Argumenten
  3. Durch Ändern des Datentyps
  4. Warum eine Methodenüberladung durch Ändern des Rückgabetyps nicht möglich ist
  5. Können wir die Hauptmethode überladen?
  6. Methodenüberladung mit Type Promotion

Wenn ein Klasse verfügt über mehrere Methoden mit demselben Namen, aber unterschiedlichen Parametern, die als bezeichnet werden Methodenüberladung .

Wenn wir nur eine Operation ausführen müssen, erhöht der gleiche Name der Methoden die Lesbarkeit der Programm .

Java-Swing-Tutorial

Angenommen, Sie müssen die angegebenen Zahlen addieren, es kann jedoch eine beliebige Anzahl von Argumenten geben. Wenn Sie die Methode beispielsweise a(int,int) für zwei Parameter und b(int,int,int) für drei Parameter schreiben, dann ist dies der Fall Es kann sowohl für Sie als auch für andere Programmierer schwierig sein, das Verhalten der Methode zu verstehen, da ihr Name unterschiedlich ist.

Deshalb führen wir eine Methodenüberladung durch, um das Programm schnell herauszufinden.

Überladung der Java-Methode

Vorteil der Methodenüberladung

Methodenüberladung erhöht die Lesbarkeit des Programms .

Verschiedene Möglichkeiten, die Methode zu überladen

Es gibt zwei Möglichkeiten, die Methode in Java zu überladen

  1. Durch Ändern der Anzahl der Argumente
  2. Durch Ändern des Datentyps

In Java ist das Überladen von Methoden nicht möglich, indem nur der Rückgabetyp der Methode geändert wird.


1) Methodenüberladung: Änderung Nr. von Argumenten

In diesem Beispiel haben wir zwei Methoden erstellt: Die erste add()-Methode führt die Addition von zwei Zahlen durch und die zweite add-Methode führt die Addition von drei Zahlen durch.

In diesem Beispiel erstellen wir statische Methoden sodass wir keine Instanz zum Aufrufen von Methoden erstellen müssen.

 class Adder{ static int add(int a,int b){return a+b;} static int add(int a,int b,int c){return a+b+c;} } class TestOverloading1{ public static void main(String[] args){ System.out.println(Adder.add(11,11)); System.out.println(Adder.add(11,11,11)); }} 
Testen Sie es jetzt

Ausgabe:

 22 33 


2) Methodenüberladung: Ändern des Datentyps von Argumenten

In diesem Beispiel haben wir zwei Methoden erstellt, die sich unterscheiden Testen Sie es jetzt

Ausgabe:

 22 24.9 

F) Warum ist eine Methodenüberladung nicht möglich, indem nur der Rückgabetyp der Methode geändert wird?

In Java ist eine Methodenüberladung aufgrund von Mehrdeutigkeit nicht möglich, indem der Rückgabetyp der Methode geändert wird. Mal sehen, wie es zu Mehrdeutigkeiten kommen kann:

 class Adder{ static int add(int a,int b){return a+b;} static double add(int a,int b){return a+b;} } class TestOverloading3{ public static void main(String[] args){ System.out.println(Adder.add(11,11));//ambiguity }} 
Testen Sie es jetzt

Ausgabe:

 Compile Time Error: method add(int,int) is already defined in class Adder 

System.out.println(Adder.add(11,11)); //Wie kann Java hier bestimmen, welche sum()-Methode aufgerufen werden soll?

10 Millionen

Hinweis: „Compile Time Error“ ist besser als „Run Time Error“. Daher gibt der Java-Compiler einen Compilerzeitfehler aus, wenn Sie dieselbe Methode mit denselben Parametern deklarieren.

Können wir die Java-Methode main() überladen?

Ja, durch Methodenüberladung. Durch Methodenüberladung können Sie beliebig viele Hauptmethoden in einer Klasse haben. Aber JVM ruft die Methode main() auf, die nur String-Arrays als Argumente empfängt. Sehen wir uns das einfache Beispiel an:

 class TestOverloading4{ public static void main(String[] args){System.out.println('main with String[]');} public static void main(String args){System.out.println('main with String');} public static void main(){System.out.println('main without args');} } 
Testen Sie es jetzt

Ausgabe:

 main with String[] 

Methodenüberladung und Typförderung

Ein Typ wird implizit zu einem anderen heraufgestuft, wenn kein passender Datentyp gefunden wird. Lassen Sie uns das Konzept anhand der folgenden Abbildung verstehen:

Überladen von Java-Methoden mit Typförderung

Wie im obigen Diagramm dargestellt, kann Byte zu Short, Int, Long, Float oder Double heraufgestuft werden. Der kurze Datentyp kann zu int, long, float oder double heraufgestuft werden. Der char-Datentyp kann auf int, long, float oder double usw. heraufgestuft werden.

Beispiel für Methodenüberladung mit TypePromotion

 class OverloadingCalculation1{ void sum(int a,long b){System.out.println(a+b);} void sum(int a,int b,int c){System.out.println(a+b+c);} public static void main(String args[]){ OverloadingCalculation1 obj=new OverloadingCalculation1(); obj.sum(20,20);//now second int literal will be promoted to long obj.sum(20,20,20); } } 
Testen Sie es jetzt
 Output:40 60 

Beispiel für Methodenüberladung mit Typheraufstufung, wenn eine Übereinstimmung gefunden wird

Wenn in der Methode übereinstimmende Typargumente vorhanden sind, wird keine Typheraufstufung durchgeführt.

 class OverloadingCalculation2{ void sum(int a,int b){System.out.println('int arg method invoked');} void sum(long a,long b){System.out.println('long arg method invoked');} public static void main(String args[]){ OverloadingCalculation2 obj=new OverloadingCalculation2(); obj.sum(20,20);//now int arg sum() method gets invoked } } 
Testen Sie es jetzt
 Output:int arg method invoked 

Beispiel für Methodenüberladung mit Typheraufstufung bei Mehrdeutigkeit

Wenn es in der Methode keine übereinstimmenden Typargumente gibt und jede Methode eine ähnliche Anzahl von Argumenten fördert, liegt Unklarheit vor.

 class OverloadingCalculation3{ void sum(int a,long b){System.out.println('a method invoked');} void sum(long a,int b){System.out.println('b method invoked');} public static void main(String args[]){ OverloadingCalculation3 obj=new OverloadingCalculation3(); obj.sum(20,20);//now ambiguity } } 
Testen Sie es jetzt
 Output:Compile Time Error 

Ein Typ wird nicht implizit herabgestuft, zum Beispiel kann double nicht implizit in einen beliebigen Typ herabgestuft werden.