C++ Polymorphismus


Polymorphismus

Polymorphismus bedeutet "viele Formen" und tritt auf, wenn wir viele Klassen haben, die durch Vererbung miteinander verwandt sind.

Wie wir im vorherigen Kapitel angegeben haben; Durch Vererbung können wir Attribute und Methoden von einer anderen Klasse erben. Der Polymorphismus verwendet diese Methoden, um verschiedene Aufgaben auszuführen. Dadurch können wir eine einzelne Aktion auf unterschiedliche Weise ausführen.

Stellen Sie sich zum Beispiel eine Basisklasse namens Animalvor, die eine Methode namens hat animalSound(). Abgeleitete Tierklassen könnten Schweine, Katzen, Hunde, Vögel sein - und sie haben auch ihre eigene Implementierung eines Tierlauts (das Schwein oinkt und die Katze miaut usw.):

Beispiel

// Base class
class Animal {
  public:
    void animalSound() {
    cout << "The animal makes a sound \n" ;
  }
};

// Derived class
class Pig : public Animal {
  public:
    void animalSound() {
    cout << "The pig says: wee wee \n" ;
  }
};

// Derived class
class Dog : public Animal {
  public:
    void animalSound() {
    cout << "The dog says: bow wow \n" ;
  }
};

Erinnern Sie sich aus dem Kapitel Vererbung daran , dass wir das :Symbol verwenden, um von einer Klasse zu erben.

Jetzt können wir Objekte erstellen Pigund die Methode Dogüberschreiben :animalSound()

Beispiel

// Base class
class Animal {
  public:
    void animalSound() {
    cout << "The animal makes a sound \n" ;
  }
};

// Derived class
class Pig : public Animal {
  public:
    void animalSound() {
    cout << "The pig says: wee wee \n" ;
   }
};

// Derived class
class Dog : public Animal {
  public:
    void animalSound() {
    cout << "The dog says: bow wow \n" ;
  }
};

int main() {
  Animal myAnimal;
  Pig myPig;
  Dog myDog;

  myAnimal.animalSound();
  myPig.animalSound();
  myDog.animalSound();
  return 0;
}

Warum und wann werden „Vererbung“ und „Polymorphismus“ verwendet?

- Es ist nützlich für die Wiederverwendbarkeit von Code: Verwenden Sie Attribute und Methoden einer vorhandenen Klasse wieder, wenn Sie eine neue Klasse erstellen.