Lập trình chức năng - Đa hình
Đa hình, về mặt lập trình, có nghĩa là sử dụng lại một mã đơn lẻ nhiều lần. Cụ thể hơn, đó là khả năng của một chương trình xử lý các đối tượng khác nhau tùy thuộc vào kiểu dữ liệu hoặc lớp của chúng.
Đa hình có hai loại -
Compile-time Polymorphism - Loại đa hình này có thể đạt được bằng cách sử dụng nạp chồng phương thức.
Run-time Polymorphism - Loại đa hình này có thể đạt được bằng cách sử dụng ghi đè phương thức và các hàm ảo.
Ưu điểm của Đa hình
Tính đa hình mang lại những ưu điểm sau:
Nó giúp lập trình viên sử dụng lại các mã, tức là các lớp sau khi được viết, kiểm tra và triển khai có thể được sử dụng lại theo yêu cầu. Tiết kiệm được nhiều thời gian.
Biến đơn có thể được sử dụng để lưu trữ nhiều kiểu dữ liệu.
Dễ dàng gỡ lỗi các mã.
Các kiểu dữ liệu đa hình
Các kiểu dữ liệu đa hình có thể được triển khai bằng cách sử dụng các con trỏ chung chỉ lưu một địa chỉ byte, không có kiểu dữ liệu được lưu trữ tại địa chỉ bộ nhớ đó. Ví dụ,
function1(void *p, void *q)
Ở đâu p và q là những con trỏ chung có thể giữ int, float (hoặc bất kỳ giá trị nào khác) làm đối số.
Hàm đa hình trong C ++
Chương trình sau đây trình bày cách sử dụng các hàm đa hình trong C ++, là một ngôn ngữ lập trình hướng đối tượng.
#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;
}
Nó sẽ tạo ra kết quả sau:
A class method is called
B class method is called
Hàm đa hình trong Python
Chương trình sau đây trình bày cách sử dụng các hàm đa hình trong Python, là một ngôn ngữ lập trình hàm.
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)
Nó sẽ tạo ra kết quả sau:
A class method is called
B class method is called