Polimorfizm C++


Wielopostaciowość

Polimorfizm oznacza „wiele form” i występuje, gdy mamy wiele klas, które są ze sobą powiązane dziedziczeniem.

Tak jak opisaliśmy w poprzednim rozdziale; Dziedziczenie pozwala nam dziedziczyć atrybuty i metody z innej klasy. Polimorfizm wykorzystuje te metody do wykonywania różnych zadań. To pozwala nam wykonać jedną akcję na różne sposoby.

Na przykład pomyśl o klasie bazowej o nazwie Animal, która ma metodę o nazwie animalSound(). Pochodnymi klasami Zwierząt mogą być Świnie, Koty, Psy, Ptaki - Mają też własną implementację odgłosów zwierząt (świnia mruczy, kot miauczy itp.):

Przykład

// 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" ;
  }
};

Pamiętaj z rozdziału Dziedziczenie , że używamy :symbolu do dziedziczenia po klasie.

Teraz możemy tworzyć obiekty Pigi Dognadpisywać animalSound()metodę:

Przykład

// 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;
}

Dlaczego i kiedy używać „dziedziczenia” i „polimorfizmu”?

- Przydaje się do ponownego wykorzystania kodu: ponownie używaj atrybutów i metod istniejącej klasy podczas tworzenia nowej klasy.