Java & Webapplikationen

5.4 Polymorphie

Objekte einer Subklasse können durch Variablen vom Typ der Superklasse referenziert werden, da sie alle Eigenschaften der Superklasse besitzen. Dadurch können für den Zugriff auf ein Objekt Variablen von unterschiedlichem Typ verwendet werden (Polymorphie).

Da abgeleitete Klassen immer Methoden und Attribute ihrer Superklasse erben, können Objekte von Subklassen wie Objekte der Superklasse behandelt werden. Durch das Ableiten können Methoden überschrieben (verändert) oder hinzugefügt werden, es können aber keine Methoden oder Attribute gelöscht werden.

Zur Verdeutlichung schauen wir uns ein Beispiel an.

Beispiel: Polymorphie

class Angestellter {
    public String name;
    public double gehalt;
    public Date geburtsdatum;

    public String lieferePersonalien() {
        // Es werden Name, Gehalt und Geburtsdatum
        // zurückgegeben.
    }
}


class Abteilungsleiter extends Angestellter {
    public String abteilung;

    public String lieferePersonalien() {
        // Es werden Name, Gehalt, Geburtsdatum
        // und Abteilung zurückgegeben.
    }

    public void befördern(Angestellter a) {
        ...
    }
}

Die Superklasse stellt wieder die Klasse Angestellter, die Subklasse die Klasse Abteilungsleiter dar. Beide Klassen implementieren die Methode lieferePersonalien(). Bei der Klasse Angestellter soll hier der Name, das Gehalt und das Geburtsdatum zurückgegeben werden, bei der Klasse Abteilungsleiter zusätzlich noch die Abteilung. In dem Beispiel wurde also das Verhalten der Subklasse verändert, es wurden aber keine Elemente gelöscht. (Man spricht hier auch von "Methoden überschreiben"; Einzelheiten dazu lesen Sie bitte in Lerneinheit 7.)
Wenn nun über eine Referenzvariable vom Typ Angestellter, die auf ein Objekt der Klasse Angestellter verweist, die Methode lieferePersonalien() aufgerufen wird, dann werden Name, Gehalt und Geburtsdatum zurückgegeben. Verweist sie auf ein Objekt der Klasse Abteilungsleiter, so wird zusätzlich noch die Abteilung zurückgegeben.

Beispiel: Polymorphie

public static void main(String[] args) {
    Angestellter a1 = new Angestellter();

    // Es werden Name, Gehalt und Geburtsdatum
    // zurückgegeben.
    String erg1 = a1.lieferePersonalien();

    Angestellter a2 = new Abteilungsleiter();

    // Es werden Name, Gehalt, Geburtsdatum und
    // Abteilung zurückgegeben.
    String erg2 = a2.lieferePersonalien();
}

Kommentare (0)

Ihr Kommentar

Name