Eine Klasse hat die folgenden zwei Methoden:
float gebuehrPenalty( int betrag ) { ... }
int gebuehrPenalty( int penalty ) { ... }
Haben diese Methoden eindeutige Siqnaturen?
Nein.
Weder die Namen der formalen Parametern, noch der Rückgabetyp sind Teil der Signatur, Die Signaturen der zwei Methoden sind:
gebuehrPenalty( int ) gebuehrPenalty( int )
Es mag seltsam anmuten, dass der Rückgabetyp nicht Teil der Signatur ist. Der Grund dafür ist, dass dadurch ein anderes Problem vermieden wird. Angenommen, dass es zwei Methoden geben würde:
float gebuehrPenalty( int betrag ) { ... }
int gebuehrPenalty( int penalty ) { ... }
und, dass die main() Methode einen Aufruf tätigt:
class KontoTester
{
public static void main( String[] args )
{
KontoChecker bobsKonto = new KontoChecker( "999", "Bob", 100 );
double result = bobsKonto.gebuehrPenalty( 60 );
}
}
Welche Methode sollte aufgerufen werden?
Da beide int und float in einen
double konvertiert werden können, gibt es wenig Gründe den einem dem anderen vorzuziehen.
(Sie könnten argumentieren, dass float näher an einem double ist
als int, aber es gibt andere Situationen, die weniger klar sind.)
Um Konfusion in solchen Situationen zu vermeiden,
wird der Rückgabetyp nicht als Teil der Signatur gezählt.