Polimorfizm C++
Wielopostaciowość
Polimorfizm oznacza „wiele form” i występuje, gdy mamy wiele klas, które są ze sobą powiązane dziedziczeniem.
Tak jak opisaliśmy w poprzednim rozdziale; Dziedziczenie pozwala nam dziedziczyć atrybuty i metody z innej klasy. Polimorfizm wykorzystuje te metody do wykonywania różnych zadań. To pozwala nam wykonać jedną akcję na różne sposoby.
Na przykład pomyśl o klasie bazowej o nazwie Animal
, która ma metodę o nazwie animalSound()
. Pochodnymi klasami Zwierząt mogą być Świnie, Koty, Psy, Ptaki - Mają też własną implementację odgłosów zwierząt (świnia mruczy, kot miauczy itp.):
Przykład
// 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" ;
}
};
Pamiętaj z rozdziału Dziedziczenie , że używamy :
symbolu do dziedziczenia po klasie.
Teraz możemy tworzyć obiekty Pig
i
Dog
nadpisywać animalSound()
metodę:
Przykład
// 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;
}
Dlaczego i kiedy używać „dziedziczenia” i „polimorfizmu”?
- Przydaje się do ponownego wykorzystania kodu: ponownie używaj atrybutów i metod istniejącej klasy podczas tworzenia nowej klasy.