Sobes.tech
Back to questions
Junior — Middle
88

Можете ли вы объяснить концепцию полиморфизма в объектно-ориентированном программировании?

Answer from AI

sobes.tech AI

Полиморфизм в объектно-ориентированном программировании — это способность объектов разных классов реагировать на одинаковые сообщения (вызовы методов) по-разному. Это позволяет использовать один интерфейс для работы с разными типами объектов.

Например, в C++ можно определить базовый класс с виртуальной функцией, а в производных классах переопределить её:

class Animal {
public:
    virtual void speak() {
        std::cout << "Animal sound" << std::endl;
    }
};

class Dog : public Animal {
public:
    void speak() override {
        std::cout << "Woof" << std::endl;
    }
};

class Cat : public Animal {
public:
    void speak() override {
        std::cout << "Meow" << std::endl;
    }
};

void makeAnimalSpeak(Animal* animal) {
    animal->speak(); // вызов метода зависит от реального типа объекта
}

Таким образом, один и тот же вызов speak() ведёт себя по-разному в зависимости от типа объекта, что и есть полиморфизм.