Функциональное программирование - полиморфизм
С точки зрения программирования, полиморфизм означает многократное повторное использование одного кода. В частности, это способность программы обрабатывать объекты по-разному в зависимости от их типа данных или класса.
Полиморфизм бывает двух типов -
Compile-time Polymorphism - Этот тип полиморфизма может быть достигнут с помощью перегрузки метода.
Run-time Polymorphism - Этот тип полиморфизма может быть достигнут с помощью переопределения методов и виртуальных функций.
Преимущества полиморфизма
Полиморфизм предлагает следующие преимущества -
Это помогает программисту повторно использовать коды, т. Е. Однажды написанные, протестированные и реализованные классы могут быть повторно использованы по мере необходимости. Экономит много времени.
Одну переменную можно использовать для хранения нескольких типов данных.
Легко отлаживать коды.
Полиморфные типы данных
Полиморфные типы данных могут быть реализованы с использованием универсальных указателей, которые хранят только байтовый адрес, без типа данных, хранящихся по этому адресу памяти. Например,
function1(void *p, void *q)
где p и q общие указатели, которые могут содержать int, float (или любое другое) значение в качестве аргумента.
Полиморфная функция в C ++
В следующей программе показано, как использовать полиморфные функции в C ++, который является объектно-ориентированным языком программирования.
#include <iostream>
Using namespace std:
class A {
public:
void show() {
cout << "A class method is called/n";
}
};
class B:public A {
public:
void show() {
cout << "B class method is called/n";
}
};
int main() {
A x; // Base class object
B y; // Derived class object
x.show(); // A class method is called
y.show(); // B class method is called
return 0;
}
Он выдаст следующий результат -
A class method is called
B class method is called
Полиморфная функция в Python
В следующей программе показано, как использовать полиморфные функции в Python, который является языком функционального программирования.
class A(object):
def show(self):
print "A class method is called"
class B(A):
def show(self):
print "B class method is called"
def checkmethod(clasmethod):
clasmethod.show()
AObj = A()
BObj = B()
checkmethod(AObj)
checkmethod(BObj)
Он выдаст следующий результат -
A class method is called
B class method is called