Разница между интерфейсом и полиморфизмом

0

Я читал онлайн-отрывок из C++ книги о полиморфизме и интерфейсах. Книга сделала различие между полиморфизмом и интерфейсами и указала, как их реализовать в C++. Тем не менее, мне всегда казалось, что интерфейсы в C++ (реализованные с использованием базового класса с чистыми виртуальными функциями) являются не чем иным, как применением полиморфизма. Я хотел бы знать четкое различие между полиморфизмом и интерфейсами, потому что отрывок смутил меня.

  • 2
    пройти через это
  • 0
    Это говорит о том, что интерфейсы и полиморфизм. Тем не менее, я пытаюсь провести различие. Интерфейсы просто кажутся применением полиморфизма из того, что я понимаю
Показать ещё 3 комментария
Теги:
polymorphism
oop
interface

3 ответа

5
Лучший ответ

Полиморфизм представляет собой абстрактную концепцию обращения с несколькими типами в единой форме, а интерфейсы - это способ реализации этой концепции. Код, который взаимодействует с интерфейсом, может взаимодействовать с любым типом, который обеспечивает этот интерфейс.

Обратите внимание, что C++ имеет (по крайней мере) две формы полиморфизма: динамический (т.е. Время выполнения) полиморфизм через интерфейсы, формально определенные виртуальными функциями, и статический (то есть время компиляции) полиморфизм через интерфейсы, неформально определяемые использованием параметров шаблона,

  • 0
    Последняя форма полиморфизма связана с общим программированием. Я был обеспокоен первым. Таким образом, интерфейсы являются одним из способов реализации полиморфизма. Спасибо за ваш ответ! Это действительно помогло мне
0

То, что я понял из концепции polymorphism и Interface выглядит следующим образом:

  1. Полиморфизм: Polymorphism - это не что иное, как наличие более чем одной формы (по всем книгам). Но в соответствии с ориентацией объекта, когда вы связываете его с реальной жизнью, вы узнаете, что Polymorphism - это не что иное, как наличие более одной формы с таким же именем или каким-либо другим качеством, но с одним собственным качеством патентов, которое никто не имеет. В соответствии с программированием: функция с тем же именем. Но разные аргументы (полиморфизм времени компиляции) и виртуальная функция, используемая для полиморфизма времени выполнения. Как объясняется здесь

Проверьте этот пример

  1. Интерфейс

Интерфейс описывает поведение или возможности класса C++, не связываясь с конкретной реализацией этого класса.

Интерфейсы C++ реализованы с использованием абстрактных классов, и эти абстрактные классы не следует путать с абстракцией данных, которая представляет собой концепцию сохранения деталей реализации отдельно от связанных данных.

Для этой цели мы используем Pure Virtual function для справки, вы можете пройти через эту ссылку

И, например, вы можете использовать объяснение Матс Петерсон

Надеюсь, это поможет вам понять базовый сенарио.

0

Типичные интерфейсы C++ используют виртуальные функции и полиморфизм для обеспечения реальной реализации. Но полиморфизм охватывает многие другие вещи, которые являются "не интерфейсами".

Интерфейс - это базовый класс, который можно использовать для класса, который передается обратно к тому, что принимает этот интерфейс. В некоторых случаях класс может предоставлять более одного интерфейса:

 class MyClass: public InterfaceGUI, InterfaceAudio
 {
   .... 
 };

здесь MyClass предоставляет класс, который взаимодействует как с графическим интерфейсом, так и с аудио интерфейсами. Это один случай множественного наследования.

С другой стороны:

 class Animal
 {
    int numLegs;
  public:
    Animal(int nLegs): numLegs(nLegs) {}
 };

 class Dog : public Animal
 {
    Dog() : Animal(4) { }
 };

здесь Animal не является чистым интерфейсом, так как он реализует некоторые функции, и это, как правило, не очень хороший дизайн для интерфейса.

  • 0
    Ваше объяснение подтвердило, что одно из применений полиморфизма - это интерфейс, но полиморфизм - это абстрактное понятие, а интерфейсы используются в дизайне кода? Спасибо за ответ. Я смог обернуть голову вокруг этой концепции.
  • 0
    Да, как говорит Juanchopanza, полиморфизм - это транспорт, интерфейс - это часть автомобильного двигателя.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню