Polimorfismo de C++


Polimorfismo

Polimorfismo significa "muchas formas", y ocurre cuando tenemos muchas clases que están relacionadas entre sí por herencia.

Como especificamos en el capítulo anterior; La herencia nos permite heredar atributos y métodos de otra clase. El polimorfismo usa esos métodos para realizar diferentes tareas. Esto nos permite realizar una misma acción de diferentes maneras.

Por ejemplo, piense en una clase base llamada Animalque tiene un método llamado animalSound(). Las clases derivadas de animales podrían ser cerdos, gatos, perros, pájaros, y también tienen su propia implementación de un sonido animal (el cerdo gruñe y el gato maúlla, etc.):

Ejemplo

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

Recuerde del capítulo Herencia que usamos el :símbolo para heredar de una clase.

Ahora podemos crear objetos y anular el Pigmétodo : DoganimalSound()

Ejemplo

// 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 qué y cuándo usar "herencia" y "polimorfismo"?

- Es útil para la reutilización de código: reutiliza atributos y métodos de una clase existente cuando creas una nueva clase.