Methodenüberladung
Unser neues und interessantes Thema für heute ist Methodenüberladung . Seien Sie vorsichtig – Methodenüberladung darf nicht mit Methodenüberschreibung verwechselt werden.
Im Gegensatz zum Überschreiben ist das Überladen ein sehr einfacher Vorgang. Dabei handelt es sich eigentlich nicht um eine Operation an Methoden, auch wenn sie manchmal mit dem schrecklichen Begriff „parametrischer Polymorphismus“ bezeichnet wird .
Das Problem hierbei ist, dass alle Methoden innerhalb einer Klasse eindeutige Namen haben müssen. Nun, das ist nicht ganz richtig. Genauer gesagt ist das überhaupt nicht korrekt. Der Methodenname muss nicht eindeutig sein. Was eindeutig sein muss , ist die Vereinigung des Methodennamens und der Typen der Methodenparameter. Diese Vereinigung wird als Methodensignatur bezeichnet
Beispiele:
Code | Beschreibung |
---|---|
|
Dies ist erlaubt. Die beiden Methoden haben eindeutige Namen. |
|
Und auch das. Die beiden Methoden haben eindeutige Namen (Signaturen). |
|
Die Methoden sind immer noch einzigartig |
|
Aber das ist nicht erlaubt . Die Methoden sind nicht eindeutig . Auch wenn sie unterschiedliche Typen zurückgeben. |
|
Aber Sie können dies tun . Methodenparameter sind eindeutig |
Die Signatur umfasst den Methodennamen und die Parametertypen . Der Rückgabetyp und die Parameternamen der Methode sind nicht enthalten . Eine Klasse kann nicht zwei Methoden mit denselben Signaturen haben – der Compiler weiß nicht, welche er aufrufen soll.
Die Parameternamen spielen keine Rolle , da sie beim Kompilieren verloren gehen. Sobald eine Methode kompiliert ist, sind nur ihr Name und ihre Parametertypen bekannt. Der Rückgabetyp geht nicht verloren, das Ergebnis der Methode muss jedoch nichts zugeordnet werden und wird daher auch nicht in die Signatur übernommen.
Gemäß den OOP- Prinzipien versteckt Polymorphismus verschiedene Implementierungen hinter einer einzigen Schnittstelle. System.out.println()
Wenn wir beispielsweise die Methode aufrufen , werden je nachdem, welche Argumente übergeben werden, unterschiedliche Methoden aufgerufen. Das ist Polymorphismus in Aktion.
Aus diesem Grund gelten verschiedene Methoden mit identischen Namen, die in derselben Klasse enthalten sind, als schwache Form des Polymorphismus.