Mal ne bloede Verstaendnissfrage ;)

Suchfunktion

Erfahrenes Mitglied
Hoi,
habe mal ne ganz klitzekleine Frage:

Was versteht man unter Überladen von Konstruktoren oder Methoden?

Also ich brauche bloss eine klare definition,
da ich nicht weiss wie man es am besten beschreibt :(

Naja danke schonmal
 
Überladen ist das implementieren von Methoden oder Konstruktoren mit gleichen Namen aber unterschiedlicher Parameteranzahl bzw. Reihenfolge.
 
cham hat gesagt.:
Überladen ist das implementieren von Methoden oder Konstruktoren mit gleichen Namen aber unterschiedlicher Parameteranzahl bzw. Reihenfolge.

Mh geht das etwas genauer?
Also fuer Dummie's wie mich?
Hab leider kein Plan davon und check das nicht :(
 
Genauer oder treffender kann man das kaum erklären :)

Vielleicht hilft dir ein Beispiel:
Code:
public class OverloadingTest
{
	public static void main(String[] args)
	{
		OverloadingTest ot = new OverloadingTest();
		
		ot.method();
		ot.method("foo");
		ot.method("foo", 1337);
		ot.method(1337, "foo");
	}
	
	public void method()
	{
		System.out.println("Aufruf ohne Parameter");
	}
	
	public void method(String str)
	{
		System.out.println("Aufruf mit Parameter " + str);
	}
	
	public void method(String str, int i)
	{
		System.out.println("Aufruf mit Parameter " + str + " und " + i);
	}
	
	public void method(int i, String str)
	{
		System.out.println("Aufruf mit Parameter " + i + " und " + str);
	}
	
}
Die Methode "method" wird hier mehrfach überladen. Einmal gibt es eine parameterfreie Variante, dann eine mit einem String als Parameter, eine mit einem String und einem Integer, und die letzte mit einem Integer und einem String (andere Reihenfolge!). Du kannst die Methode also mit verschiedenen Parametern aufrufen - die jeweilige Überladung wird dann anhand der Parameterliste rausgefischt und aufgerufen.

Genutzt wird das beispielsweise, um variable Parameterlisten zu implementieren:
Code:
public class OverloadingTest2
{
	public static void main(String[] args)
	{
		OverloadingTest2 ot2 = new OverloadingTest2();
		
		ot2.method();
		ot2.method("foo");
		ot2.method("foo", 1337);
		ot2.method("foo", 1337, -1.0f);
	}
	
	public void method()
	{
		method("Standardwert");
	}
	
	public void method(String str)
	{
		method(str, 0);
	}
	
	public void method(String str, int i)
	{
		method(str, i, 1.0f);
	}
	
	public void method(String str, int i, float f)
	{
		System.out.println("Parameter:" + str + ", " + i + ", " + f);		
	}
		
}
Die Methode "method" kann man hier mit keinem, einem, zwei oder drei Parametern aufrufen. Die Parameter, die weggelassen werden, werden jeweils mit Standardwerten gefüllt und an die nächsthöhere Instanz weitergeleitet.

Genau so kann man auch Überladungen einer Methode zur Behandlung verschiedener Datentypen deklarieren:
Code:
public class OverloadingTest3
{
	public static void main(String[] args)
	{
		OverloadingTest3 ot3 = new OverloadingTest3();
		
		ot3.addAndPrint("foo", "bar");
		ot3.addAndPrint(1, 2);
		ot3.addAndPrint(1.3, 3.7);
	}
	
	public void addAndPrint(String str1, String str2)
	{
		System.out.println(str1 + str2);
	}
	
	public void addAndPrint(int i1, int i2)
	{
		System.out.println(i1 + i2);
	}
	
	public void addAndPrint(double d1, double d2)
	{
		System.out.println(d1 + d2);
	}
			
}
Hier gibt es drei verschiedene Überladungen der Methode "addAndPrint", die jeweils zwei Parameter annehmen. Je nach Parametertyp verhalten sie sich anders (Strings werden konkatiert, Integer und Double werden addiert).

Ich hoffe das reicht erst mal - wenn noch Fragen bestehen, einfach stellen :)
 
Zurück