C++ Поліморфізм
Поліморфізм
Поліморфізм означає "багато форм", і він виникає, коли ми маємо багато класів, пов’язаних один з одним шляхом успадкування.
Як ми вказали в попередньому розділі, Наслідування дозволяє нам успадковувати атрибути та методи з іншого класу.
Поліморфізм використовує ці методи для виконання різних завдань. Це дозволяє нам виконувати одну дію різними способами.
Наприклад, подумайте про базовий клас під назвою Animal
, який має метод під назвою animalSound()
. Похідними класами Animals (тварин) можуть бути Pigs, Cats, Dogs, Birds (свині, коти, собаки, птахи) — і вони також мають власну реалізацію звуку тварин (свиня хрюкає, а кіт нявкає тощо):
Приклад
// Базовий клас
class Animal {
public:
void animalSound() {
cout << "Тварина видає звук \n";
}
};
// Похідний клас
class Pig : public Animal {
public:
void animalSound() {
cout << "The pig says: wee wee \n";
}
};
// Похідний клас
class Dog : public Animal {
public:
void animalSound() {
cout << "The dog says: bow wow \n";
}
};
Пам’ятайте з розділу про Успадкування, що ми використовуємо символ :
для успадкування від класу.
Тепер ми можемо створювати об’єкти Pig
і Dog
та перевизначати animalSound()
метод:
Приклад
// Базовий клас
class Animal {
public:
void animalSound() {
cout << "Тварина видає звук \n";
}
};
// Похідний клас
class Pig : public Animal {
public:
void animalSound() {
cout << "The pig says: wee wee \n";
}
};
// Похідний клас
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;
}
Спробуйте самі »
Навіщо і коли використовувати «Наслідування» та «Поліморфізм»?
— Це корисно для повторного використання коду: повторно використовуйте атрибути та методи існуючого класу під час створення нового класу.