zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Eine Klasse hat die folgenden zwei Methoden:

float strafGebuehr( int betrag  ) { ... }
int   strafGebuehr( int strafe ) { ... }

Haben diese Methoden eindeutige Siqnaturen?

Antwort:

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:

strafGebuehr( int )
strafGebuehr( 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 strafGebuehr( int betrag ) { ... }
int   strafGebuehr( int strafe ) { ... }

und, dass die main() Methode den folgenden Aufruf durchführt:

class KontoTester
{
  public static void main( String[] args )
  {

    Konto bobsKonto = new Konto( "999", "Bob", 100 );

    double result = bobsKonto.strafGebuehr( 60 );

  }
}

Welche Methode sollte aufgerufen werden? Da sowohl int als auch float in ein double konvertiert werden können, gibt es wenig Gründe die eine Methode der 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 in solchen Situationen Konfusion zu vermeiden, wird der Rückgabetyp nicht als Teil der Signatur gezählt.

FRAGE 14:

Eine Klasse hat die folgenden zwei Methoden:

void aendernZinssatz( double neuerZinssatz  ) { ... }
void aendernZinssatz( int    neuerZinssatz  ) { ... }

Haben diese Methoden eindeutige Signaturen?