Polimorfismo C++


Polimorfismo

Polimorfismo significa "muitas formas", e ocorre quando temos muitas classes que estão relacionadas entre si por herança.

Como especificamos no capítulo anterior; A herança nos permite herdar atributos e métodos de outra classe. O polimorfismo usa esses métodos para realizar diferentes tarefas. Isso nos permite realizar uma única ação de maneiras diferentes.

Por exemplo, pense em uma classe base chamada Animalque tem um método chamado animalSound(). Classes derivadas de animais podem ser porcos, gatos, cachorros, pássaros - e eles também têm sua própria implementação de um som animal (o porco uiva, o gato mia, etc.):

Exemplo

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

Lembre-se do capítulo Herança que usamos o :símbolo para herdar de uma classe.

Agora podemos criar Pige Dogobjetos e sobrescrever o animalSound()método:

Exemplo

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

Por que e quando usar "herança" e "polimorfismo"?

- É útil para reutilização de código: reutilize atributos e métodos de uma classe existente ao criar uma nova classe.