@Leffken
Студент, как студент!

Правильно ли я понял полиморфизм?

Всем привет. Читаю про ооп и что-то не понял не много про полиморфизм. Почти везде пишут что это выполнение разного кода в зависимости от типа и скидывают такую статейку : полиморфизм
Но что если изначально не наследоваться от одного класса, а просто создать 2 разных класса и в них сделать методы с одинаковым названием ? я так понимаю автор хотел отразить суть именно в методе do_print ?
  • Вопрос задан
  • 256 просмотров
Пригласить эксперта
Ответы на вопрос 2
Daniro_San
@Daniro_San
Программист
Есть два проявления полиморфизма - перегрузка и переопределение. Полагаю с первым вы уже сталкивались. Вот пример переопределения на C++:

#include <iostream>
#include <memory>
using namespace std;

struct Base {
    virtual void Action() = 0;
};

struct A: public Base {
    virtual void Action() override {  cout<< 'A'; }
}

struct B: public Base {
    virtual void Action() override {  cout<< 'B'; }
}

int main() {
    // Используем общий интерфейс для разных наследников

    unique_ptr<Base> ptr = make_unique<A>();
    ptr->Action(); // A

    ptr = make_unique<B>();
    ptr->Action(); // B
}
Ответ написан
Комментировать
alexchin
@alexchin
1. Есть два разных объекта. Если они произведены от одного класса, то на уровне этого класса они могут выполнять все наследованные методы (должны), значит эти объекты полиморфные. Те нам будет удобно работать с абстрактными объектами не вдаваясь в детали реализации. Это и описано в статье.
2. Тоже самое можно сделать, объявив для этих объектов поддержку одинаковых интерфейсов, как и было описано в вопросе Лев К.

2 безусловно допустимо, но 1 проще.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы