Polimorfismo C++


Polimorfismo

Polimorfismo significa "molte forme" e si verifica quando abbiamo molte classi che sono correlate tra loro per eredità.

Come abbiamo specificato nel capitolo precedente; L'ereditarietà ci consente di ereditare attributi e metodi da un'altra classe. Il polimorfismo utilizza questi metodi per eseguire compiti diversi. Questo ci consente di eseguire una singola azione in modi diversi.

Ad esempio, pensa a una classe base chiamata Animalche ha un metodo chiamato animalSound(). Le classi derivate di Animali potrebbero essere Maiali, Gatti, Cani, Uccelli - E hanno anche la propria implementazione di un suono animale (il maiale oinks e il gatto miagola, ecc.):

Esempio

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

Ricorda dal capitolo Eredità che usiamo il :simbolo per ereditare da una classe.

Ora possiamo creare Pige Dogoggetti e sovrascrivere il animalSound()metodo:

Esempio

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

Perché e quando usare "ereditarietà" e "polimorfismo"?

- È utile per il riutilizzo del codice: riutilizza attributi e metodi di una classe esistente quando crei una nuova classe.