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
public void print();
public void print2();
Dies ist erlaubt. Die beiden Methoden haben eindeutige Namen.
public void print();
public void print(int n);
Und auch das. Die beiden Methoden haben eindeutige Namen (Signaturen).
public void print(int n, int n2);
public void print(int n);
Die Methoden sind immer noch einzigartig
public int print(int a);
public void print(int n);
Aber das ist nicht erlaubt . Die Methoden sind nicht eindeutig . Auch wenn sie unterschiedliche Typen zurückgeben.
public int print(int a, long b);
public long print(long b, int a);
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.