Eine Klasse hat die folgenden zwei Methoden:
float strafGebuehr( int betrag ) { ... } int strafGebuehr( int strafe ) { ... }
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:
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.
Eine Klasse hat die folgenden zwei Methoden:
void aendernZinssatz( double neuerZinssatz ) { ... } void aendernZinssatz( int neuerZinssatz ) { ... }
Haben diese Methoden eindeutige Signaturen?