Polymorphismus

Polymorphismus erlaubt Objekten verschiedener Klassen, über eine gemeinsame Schnittstelle angesprochen zu werden. Diese Lektion behandelt statischen und dynamischen Polymorphismus in C++.

1. Statischer Polymorphismus

Methodenüberladung (Overloading) ist eine Form von statischem Polymorphismus: Mehrere Methoden gleichen Namens, unterschiedliche Parameter.
class Rechner {
public:
    int add(int a, int b) { return a + b; }
    double add(double a, double b) { return a + b; }
};

int main() {
    Rechner r;
    std::cout << r.add(2,3) << std::endl;      // 5
    std::cout << r.add(2.5,3.1) << std::endl;  // 5.6
    return 0;
}

2. Dynamischer Polymorphismus

Dynamischer Polymorphismus wird über virtuelle Funktionen (virtual) umgesetzt. Die Entscheidung, welche Methode aufgerufen wird, erfolgt zur Laufzeit.
class Tier {
public:
    virtual void laut() { std::cout << "Tier macht Geräusch" << std::endl; }
};

class Hund : public Tier {
public:
    void laut() override { std::cout << "Wuff" << std::endl; }
};

int main() {
    Tier* t = new Hund();
    t->laut(); // Wuff
    delete t;
    return 0;
}

3. Best Practices

4. Zusammenfassung