Полиморфизм в ООП: что такое полиморфизм [подробное объяснение]
Опубликовано: 2020-11-24Полиморфизм в ООП является неотъемлемой и важной концепцией каждого объектно-ориентированного языка программирования. Объект или ссылка в основном могут принимать несколько форм в разных случаях. Как следует из самого слова, «поли» означает «много», а «морф» указывает на «формы»; таким образом, полиморфизм в целом будет означать «свойство иметь множество форм».
Объектно-ориентированный язык программирования обрабатывает классы и объекты с помощью единого интерфейса. Он реализует концепции перегрузки функций, переопределения и виртуальных функций. Кроме того, он обычно используется для инструментирования наследования в программировании.
Читайте: Полиморфизм против наследования
Оглавление
Пример полиморфизма в ООП
Полиморфизм — это метод в объектно-ориентированном языке программирования, который выполняет разные действия в соответствии с классом объекта, который его вызывает. При полиморфизме сообщение отправляется нескольким объектам класса, и каждый объект отвечает соответствующим образом в соответствии со свойствами класса.
Ниже приведен код, который ясно объясняет полиморфизм:
использовать предупреждения;
# Создание класса пакета
пакет А;
# Создание конструктора
новый
{
# shift примет имя пакета
# и присвоить его переменной 'класс'
мой класс $ = сдвиг;
мой $я = {
'имя' => сдвиг,
'roll_no' => сдвиг
};
подметод
{
print("Это принадлежит классу А");
}
};
пакет Б;
# Массив @ISA содержит список
# родительских классов этого класса, если таковые имеются
моя @ISA = (А);

подметод
{
print("Это принадлежит классу B");
}
основной пакет;
Б->метод();
А->метод();
Выход:
Это относится к классу B
Это относится к классу А
Научитесь создавать приложения, такие как Swiggy, Quora, IMDB и другие.
Объяснение
Для первого вывода метод(), определенный в классе B, переопределяет определение, унаследованное от класса A, и наоборот для второго вывода. Это свойство полезно для расширения функциональности любого уже существующего пакета без перезаписи всего определения всего класса. Таким образом, упрощая работу программиста и вызывая широкое использование.
Типы полиморфизма в Oops
В языке объектно-ориентированного программирования (OOPS) существует два типа полиморфизма, как показано ниже:
- Статическое связывание (или время компиляции) Полиморфизм, например, перегрузка метода
- Полиморфизм динамического связывания (или времени выполнения), например, переопределение метода

Источник
1. Время компиляции или статический полиморфизм
С помощью перегрузки методов статический полиморфизм достигается в языках объектно-ориентированного программирования, которые позволяют программисту реализовывать различные методы. Имена, которые они используют, могут быть одинаковыми, но их параметры различны. Определенные условия благоприятны для статического полиморфизма, как показано ниже:
- Типы всех параметров должны быть разными.
- Последовательность Параметров может быть разной.
- Количество параметров одного метода должно отличаться от другого метода.
В полиморфизме статической привязки соответствующий тип и количество аргументов вызывают перегруженные функции.
- Поскольку вся эта информация доступна во время компиляции, компилятор выбирает соответствующую функцию.
- Это делает перегрузка функций, а перегрузка операторов также называется статической привязкой или ранней привязкой.
Программа
класс А // базовый класс
{
в а ;
общественность :
пустой дисплей ()
{
cout<< «Класс А» ;
}
};
класс B: общедоступный A // производный класс
{
интервал б;
общественность :
пустой дисплей ()
{
cout << "Класс B" ;
}
};
В приведенной выше программе прототип функции display() одинаков как в базовом, так и в производном классе. Поэтому статическая привязка здесь не может быть применена. Эта программа будет работать лучше всего во время выполнения с соответствующим набором функций.
- Во время выполнения компилятор языка идентифицирует различные методы, определяя сигнатуры этих методов.
- Компилятор сначала идентифицирует сигнатуру метода и выбирает метод для конкретного вызова метода во время компиляции программы.
- Выполнение для полиморфизма времени компиляции намного быстрее, но процесс не такой гибкий.
Читайте также: Вопросы для интервью OOPS
Время выполнения или динамический полиморфизм
В динамическом полиморфизме вызов одного переопределенного метода выполняется во время выполнения программы. Переопределение метода — один из ярких примеров полиморфизма во время выполнения. В этом процессе переопределение выполняется с помощью указателей и виртуальных функций.
- В методе переопределения один метод объявляется в подклассе, присутствующем в родительском классе. Дочерний класс получает метод для реализации.
- Во время полиморфизма во время выполнения класс предлагает собственную спецификацию другому унаследованному методу. Этот перенос между методами достигается без изменения кодов объектов родительского класса.
Программа
#include <иопоток>
использование пространства имен std;
class Animal { // базовый класс
общественность :
цвет строки = «Коричневый» ;
};
class Dog: public Animal // наследует класс Animal.
{
общественность :
цвет строки = «Зеленый» ;
};
интервал основной ( недействительным ) {
Животное d= Собака();
cout<<d.color;

}
Выход:
коричневый
- В полиморфизме времени выполнения метод объекта вызывается во время выполнения, а не во время компиляции.
- Это стало возможным благодаря переопределению методов, которое также называют динамическим связыванием или поздним связыванием.
- Процесс динамического полиморфизма сравнительно медленнее, но гибче, чем полиморфизм времени компиляции.
Различия черно-белого полиморфизма во время компиляции и во время выполнения
Полиморфизм времени компиляции | Полиморфизм времени выполнения | |
Вызов функции | Функция вызывается во время компиляции. | Функция вызывается во время выполнения. |
Общие условия | Это известно как перегрузка, раннее связывание и статическое связывание. | Это известно как переопределение, позднее связывание и динамическое связывание. |
Имя и параметры метода | В перегрузке несколько методов имеют одно и то же имя, но с разным количеством или типом параметров. | В Overriding несколько методов имеют одинаковые имена, количество и тип параметров. |
Перевозчики | Это достигается перегрузкой функций и операторов. | Это достигается с помощью виртуальных функций и указателей. |
Время исполнения | Он выполняется быстрее, чем полиморфизм времени выполнения во время компиляции. | Он выполняется медленнее, чем полиморфизм времени компиляции во время выполнения. |
Гибкость | Он менее гибкий, так как все выполняется во время компиляции. | Он более гибкий, поскольку все выполняется во время выполнения. |
Заключительные слова
Полиморфизм является обязательным для изучения концепцией ООП, поскольку он предлагает несколько преимуществ при программировании. С помощью полиморфизма пользователь может переделывать протестированные классы и коды. Это полезно для расширения программирования само по себе. Это также позволяет пользователю хранить несколько переменных разных типов, таких как double, Float, Int или Long, в одной переменной, чтобы упростить их поиск и реализацию.
Если вам интересно узнать больше об ООП, разработке программного обеспечения с полным стеком, ознакомьтесь с дипломом PG upGrad и IIIT-B по разработке программного обеспечения с полным стеком, который предназначен для работающих профессионалов и предлагает более 500 часов интенсивного обучения, 9+ проектов. и задания, статус выпускника IIIT-B, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.