C++ Polymorfisme


Polymorfisme

Polymorfisme betekent "vele vormen", en het komt voor wanneer we veel klassen hebben die door overerving aan elkaar gerelateerd zijn.

Zoals we in het vorige hoofdstuk hebben aangegeven; Overerving laat ons attributen en methoden erven van een andere klasse. Polymorfisme gebruikt die methoden om verschillende taken uit te voeren. Hierdoor kunnen we één handeling op verschillende manieren uitvoeren.

Denk bijvoorbeeld aan een basisklasse met de naam Animaldie een methode heeft met de naam animalSound(). Afgeleide klassen van dieren kunnen varkens, katten, honden, vogels zijn - en ze hebben ook hun eigen implementatie van een dierlijk geluid (het varken knort en de kat miauwt, enz.):

Voorbeeld

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

Onthoud uit het hoofdstuk Overerving dat we het :symbool gebruiken om van een klasse te erven.

Nu kunnen we objecten Pigen objecten maken en de methode Dogoverschrijven :animalSound()

Voorbeeld

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

Waarom en wanneer "Overerving" en "Polymorfisme" gebruiken?

- Het is handig voor herbruikbaarheid van code: hergebruik attributen en methoden van een bestaande klasse wanneer u een nieuwe klasse aanmaakt.