„Hallo Amigo! Ich werde dir etwas über die Methodenüberladung erzählen.“
„Die kann man auch überladen?! Was für ein Tag!“
„Man kann eine ganze Menge mit ihnen machen, aber darauf wollen wir jetzt nicht näher eingehen.“
„Alles klar.“
„ Das Überladen ist ein sehr einfacher Vorgang. Eigentlich ist es nicht einmal ein Vorgang mit Methoden, auch wenn es manchmal mit einem abschreckenden Namen bezeichnet wird: parametrische Polymorphie“
Du musst dir nur merken, dass jede Methode in einer Klasse einen eindeutigen Namen haben muss.
„Ja, ich weiß.“
„Naja, das stimmt nicht so ganz. Eigentlich stimmt es überhaupt nicht. Eine Methode muss keinen eindeutigen Namen haben. Eindeutig muss die Kombination aus dem Namen der Methode und den Typen ihrer Parameter sein. Diese Kombination wird auch als Methodensignatur bezeichnet.“
Code | Kommentare |
---|---|
|
Das ist erlaubt. Die beiden Methoden haben eindeutige Namen. |
|
Und das ist auch erlaubt. Die beiden Methoden haben eindeutige Namen (Signaturen). |
|
Die Methodennamen sind hier immer noch eindeutig. |
|
Aber das ist nicht erlaubt. Die Methoden sind nicht eindeutig, auch wenn verschiedene Typen übergeben werden. |
|
Aber das ist erlaubt. Die Methodenparameter sind eindeutig. |
„Das habe ich schonmal irgendwo gesehen.“
„Klar. Wenn du „System.out.println“ eingibst, schlägt IntelliJ IDEA ein paar Dutzend Versionen von print-Methoden vor, die unterschiedliche Parameter verwenden. Der Compiler identifiziert ganz einfach die gewünschte Methode basierend auf den Typen der übergebenen Parameter und ruft sie dann auf.“
„Das ist nicht so schwierig. Aber es ist keine Polymorphie.“
„Oder genauer gesagt, es ist nicht das Überschreiben von Methoden.“
Übrigens möchte ich erwähnen, dass die Parameternamen irrelevant sind. Sie gehen bei der Kompilierung verloren. Ist eine Methode einmal kompiliert, sind nur noch ihr Name und ihre Parametertypen bekannt.
GO TO FULL VERSION