Eine Klasse hat die folgenden zwei Methoden:

float gebuehrPenalty( int betrag  ) { ... }
int   gebuehrPenalty( int penalty ) { ... }

Haben diese Methoden eindeutige Siqnaturen?

Eine gute Antwort könnte sein:

Nein.

Der Rückgabetyp zählt nicht

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.

FRAGE 14:

Eine Klasse hat die folgenden zwei Methoden:

void changeInterestRate( double newRate  ) { ... }
void changeInterestRate( int    newRate  ) { ... }

Haben diese Methoden eindeutige Signaturen?