Junior
Was kann bei der Überladung von Methoden in der Programmierung geändert werden?
sobes.tech KI
Antwort von AI
Bei der Methodenüberladung (method overloading) kann man ändern:
- Anzahl der Parameter: Methoden mit demselben Namen können unterschiedliche Mengen an formalen Parametern haben.
- Parametertypen: Methoden mit demselben Namen und gleicher Parameterzahl können sich in den Parametertypen unterscheiden.
- Reihenfolge der Parametertypen: Wenn Methoden die gleiche Anzahl an Parametern und die gleichen Typen haben, aber in unterschiedlicher Reihenfolge, gilt dies ebenfalls als Überladung.
Beispiel in Java:
// Klasse mit überladenen Methoden
class Calculator {
// Methode zur Addition zweier Ganzzahlen
public int add(int a, int b) {
return a + b;
}
// Überladene Methode: Addition von drei Ganzzahlen
public int add(int a, int b, int c) {
return a + b + c;
}
// Überladene Methode: Addition zweier Gleitkommazahlen
public double add(double a, double b) {
return a + b;
}
// Überladene Methode: Addition einer Ganzzahl und einer Gleitkommazahl
public double add(int a, double b) {
return a + b;
}
// Überladene Methode: Addition einer Gleitkommazahl und einer Ganzzahl
public double add(double a, int b) {
return a + b;
}
}
Was bei der Überladung von Methoden nicht geändert werden darf:
- Rückgabetyp: Zwei Methoden mit demselben Namen und derselben Signatur (Anzahl, Typen und Reihenfolge der Parameter) dürfen sich nur im Rückgabetyp unterscheiden.
- Zugriffsmodifikatoren: Zugriffsmodifikatoren (public, private, protected, default) beeinflussen die Überladung nicht.
- Vorhandensein oder Fehlen des Schlüsselworts
static: Es ist nicht möglich, eine statische Methode zu überladen, indem man eine nicht-statische Methode mit derselben Signatur definiert, oder umgekehrt. - Liste der vom Methodentyp geworfenen Ausnahmen: Die Ausnahmeliste ist Teil der Methodensignatur und wird vom Compiler zur Unterscheidung der überladenen Methoden nicht verwendet.
Vergleich zwischen Überladung und Überschreibung von Methoden:
| Merkmal | Überladung (Overloading) | Überschreibung (Overriding) |
|---|---|---|
| Wo findet es statt | In einer Klasse oder in einer Klassenhierarchie | In einer Unterklasse |
| Methodenname | Identisch | Identisch |
| Methodensignatur | Unterschiedlich (Anzahl, Typen, Reihenfolge der Parameter) | Identisch |
| Rückgabetyp | Kann unterschiedlich sein (aber nicht das einzige Unterscheidungsmerkmal) | Muss gleich oder kovariant sein (bei Objekten) |
| Zweck | Mehrere Varianten einer Aktion für unterschiedliche Datentypen oder Argumentmengen bereitstellen | Das Verhalten einer geerbten Methode in der Unterklasse ändern |
| Beziehung zwischen Methoden | Unabhängige Methoden | "Ist-ein"-Beziehung (Vererbung) |
| Polymorphismus | Polymorphismus zur Kompilierzeit (statisch) | Polymorphismus zur Laufzeit (dynamisch) |