Die Signatur einer Methode ist der Name der Methode und die Typen in ihrer Parameterliste, ungefähr etwas wie dieses:
irgendeineMethode( int, double, String )
Der Rückgabetyp ist kein Bestandteil der Signatur. Die Namen der Parameter spielen keine Rolle, nur die Typen und ihre Reihenfolge.
Der Name einer Methode reicht nicht aus, um sie eindeutig zu identifizieren, da es mehrere Versionen von dieser Methode geben kann, jede mit verschiedenen Parametern.
Durch die Verwendung der Typen in der Parameterliste kann die gewünschte Methode präzisiert werden.
Der Rückgabetyp kann wegen der folgenden Situation nicht verwendet werden.
Angenommen es gibt zwei irgendeineMethode()
Methoden:
eine ist in der Superklasse wie diese:
int irgendeineMethode( int x, double y, String z )
{
//Methodenkörper
}
und die andere Methode ist in einer Subklasse wie dieser definiert:
short irgendeineMethode( int a, double b, String c )
{
// vollkommen anderer Methodenkörper
}
Irgendwo in dem Programm wird irgendeineMethode()
aufgerufen:
long w = subklasseObjekt.irgendeineMethode( 12, 34.9, "Welche Methode?" );
Der Wert rechts vom Gleichheitszeichen könnte sowohl
ein int
als auch ein short
sein.
Beide können in einen long
-Wert konvertiert werden, der
für die Variable w
gebraucht wird.
Wir können nicht sagen welche der zwei irgendeineMethode()
mit der Anweisung übereinstimmt. Mit anderen Worten, die Signaturen der zwei Methoden sind nicht eindeutig.
Haben die folgenden zwei Methoden verschiedene Signaturen?
double aMethode( int x, String y){. . .} short aMethode( int a, double b){. . .}