Sobes.tech
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)