# Methoden überladen - überschreiben - wo unterschied?



## Noob (14. Jan 2005)

Hi Leute!

Hab jetzt Informatik Grundkurs und wir programmieren dort in Java. In einer Aufgabenstellung tauchten dort die beiden Begriffe Methodenüberladung und überschreibung auf.

Jetzt bin ich mir aber nicht ganz sicher ob ich es richtig verstanden habe.

Überschreiben:

Wenn ich in meiner eigenen Klasse die Methode toString() zur Verfügung stelle, dann überschreibe ich die Methode (weil sie von Object an alle anderen Klassen "vererbt" wird - richtig?

Überladen:


```
public void calc()
{
....
}

public void calc(int a)
{
....
}

public void calc(int a,int b)
{

}
```

Beide Methoden sind in der selben Klasse. In diesem Beispiel überlade ich die Methoden, korrekt?

WIe gesagt, bin mir jetzt nicht sicher ob ich das richtig verstanden habe. Konnte über SUchfunktion auch nichts richtiges finden (vielleicht bin ich zu blöd dafür).

Würde mich freuen über eine Antwort.


----------



## bummerland (14. Jan 2005)

genau so ist es.


----------



## Noob (14. Jan 2005)

Echt ? Hätte jetzt gar nicht gedacht das ich das tatsächlich richtig verstanden habe. Danke.


----------



## Roar (14. Jan 2005)

Noob hat gesagt.:
			
		

> Echt ? Hätte jetzt gar nicht gedacht das ich das tatsächlich richtig verstanden habe. Danke.



loll


----------



## foobar (15. Jan 2005)

Beim Überladen von Methoden *muß* die Parameterliste der überladenen Methode geändert werden, wohingegen der Rückgabewert verändert werden *kann*. 

Beim Überschreiben müssen die beiden Methodensignaturen(Methodenname, Parameterliste, Rückgabewert) exakt übereinstimmen. Ausserdem darf eine überschreibende Methode keinen einschränkenderen Modifier als die überschriebene Methode besitzen.


----------



## Sky (17. Jan 2005)

foobar hat gesagt.:
			
		

> wohingegen der Rückgabewert verändert werden *kann*.



Das ändern des Rückgabewertes ist aber erst seit Java 5.0 möglich, oder??


----------



## Bleiglanz (17. Jan 2005)

sky80 hat gesagt.:
			
		

> foobar hat gesagt.:
> 
> 
> 
> ...



ja, und zwar kann ein "Subtyp" des in der original Funktion zurückgegebenen Typs verwendet werden


----------



## foobar (17. Jan 2005)

> Das ändern des Rückgabewertes ist aber erst seit Java 5.0 möglich, oder??


Nein



> Method overloading is one of the ways that java implements polymorphism. When an overloaded method is called, java uses the type and/or number of arguments to decide which version of the overloaded method to actually call. *Overloaded methods may or may not have different return types*. When java encounters a call to an overloaded method, it simply executes the version of the method whose parameters match the arguments used in the call.



http://www.akgupta.com/Java/Notes/section6-2.htm


----------



## Sky (17. Jan 2005)

Ok, bei *überladenen* Methoden natürlich (habe mich falsch  ausgedrückt...). 
Was ich meinte: Das ändern des Rückgabewertes bei *überschriebenen* Methoden ist erst seit Java 5.0 möglich!?


----------

