Полиморфизм С++
Полиморфизм
Полиморфизм означает «много форм», и он возникает, когда у нас есть много классов, связанных друг с другом путем наследования.
Как мы указали в предыдущей главе; Наследование позволяет нам наследовать атрибуты и методы другого класса. Полиморфизм использует эти методы для выполнения различных задач. Это позволяет нам выполнять одно и то же действие разными способами.
Например, подумайте о базовом классе с именем Animal
, у которого есть метод с именем animalSound()
. Производными классами животных могут быть Свиньи, Кошки, Собаки, Птицы. У них также есть собственная реализация звука животного (свинья хрюкает, кошка мяукает и т. д.):
Пример
// 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" ;
}
};
Помните из главы «Наследование» , что мы используем :
символ для наследования от класса.
Теперь мы можем создавать Pig
и
Dog
объекты и переопределять animalSound()
метод:
Пример
// 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;
}
Зачем и когда использовать «наследование» и «полиморфизм»?
- Это полезно для повторного использования кода: повторно используйте атрибуты и методы существующего класса при создании нового класса.