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 Pig
a
Dog
objekty 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.