Полиморфизм в ООП: что такое полиморфизм [подробное объяснение]

Опубликовано: 2020-11-24

Полиморфизм в ООП является неотъемлемой и важной концепцией каждого объектно-ориентированного языка программирования. Объект или ссылка в основном могут принимать несколько форм в разных случаях. Как следует из самого слова, «поли» означает «много», а «морф» указывает на «формы»; таким образом, полиморфизм в целом будет означать «свойство иметь множество форм».

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

Читайте: Полиморфизм против наследования

Оглавление

Пример полиморфизма в ООП

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

Ниже приведен код, который ясно объясняет полиморфизм:

использовать предупреждения;
# Создание класса пакета
пакет А;
# Создание конструктора
новый
{
# shift примет имя пакета
# и присвоить его переменной 'класс'
мой класс $ = сдвиг;
мой $я = {
'имя' => сдвиг,
'roll_no' => сдвиг
};
подметод
{
print("Это принадлежит классу А");
}
};
пакет Б;
# Массив @ISA содержит список
# родительских классов этого класса, если таковые имеются
моя @ISA = (А);

подметод
{
print("Это принадлежит классу B");
}
основной пакет;
Б->метод();
А->метод();

Выход:

Это относится к классу B

Это относится к классу А

Научитесь создавать приложения, такие как Swiggy, Quora, IMDB и другие.

Объяснение

Для первого вывода метод(), определенный в классе B, переопределяет определение, унаследованное от класса A, и наоборот для второго вывода. Это свойство полезно для расширения функциональности любого уже существующего пакета без перезаписи всего определения всего класса. Таким образом, упрощая работу программиста и вызывая широкое использование.

Типы полиморфизма в Oops

В языке объектно-ориентированного программирования (OOPS) существует два типа полиморфизма, как показано ниже:

  1. Статическое связывание (или время компиляции) Полиморфизм, например, перегрузка метода
  2. Полиморфизм динамического связывания (или времени выполнения), например, переопределение метода

Источник

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, практические практические проекты и помощь в трудоустройстве в ведущих фирмах.

Станьте разработчиком полного стека

ДИПЛОМ PG UPGRAD И IIIT-BANGALORE В РАЗРАБОТКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
Узнать больше