Polymorfismus C++


Polymorfismus

Polymorfismus znamená „mnoho forem“ a vyskytuje se, když máme mnoho tříd, které spolu souvisí dědičností.

Jak jsme upřesnili v předchozí kapitole; Dědičnost nám umožňuje dědit atributy a metody z jiné třídy. Polymorfismus používá tyto metody k provádění různých úkolů. To nám umožňuje provádět jednu akci různými způsoby.

Představte si například nazvanou základní třídu Animal, která má metodu nazvanou animalSound(). Odvozené třídy zvířat mohou být Prasata, Kočky, Psi, Ptáci - A také mají vlastní implementaci zvířecího zvuku (prase pídí a kočka mňouká atd.):

Příklad

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

Pamatujte si z kapitoly Dědičnost , že používáme :symbol k dědění od třídy.

Nyní můžeme vytvořit Piga Dogobjekty a přepsat animalSound()metodu:

Příklad

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

Proč a kdy používat „dědičnost“ a „polymorfismus“?

- Je to užitečné pro znovupoužitelnost kódu: při vytváření nové třídy znovu použijte atributy a metody existující třídy.