Hỏi đáp

Tính đa hình trong OOP và các loại đa hình bạn cần biết

Tính đa hình trong OOP là một nội dung chưa mới, nhưng ít ai thực sự hiểu rõ về khái niệm này. Bài viết cũng sẽ giải thích về Tính đa hình cũng như Chia sẻ về loại đa hình mà bạn cần biết.

Tổng quan về Tính đa hình trong OOP

Khái niệm

Tính đa hình (Polymorphism) chính là một trong bốn tính chất cơ bản của Lập trình hướng đối tượng (Object-oriented programming – viết tắt chính là OOP). các tính chất còn lại bao gồm: Tính đóng gói (Encapsulation), Tính kế thừa (Inheritance) và Tính trừu tượng (Abstraction).

Bạn đang đọc: Tính đa hình trong OOP và các loại đa hình bạn cần biết

Bạn đang xem: Tính đa hình chính là gì

Trong tiếng Hy Lạp, thuật ngữ “polymorphism” mang ý nghĩa là “có nhiều dạng”. Tương tự, trong lập trình thuật ngữ này dùng để ám chỉ đến việc một biến, một hàm hoặc một phương thức có thể tồn tại ở nhiều dạng khác nhau. Tức chính là nhiều hàm hoặc phương thức có thể cùng một tên nhưng chức năng thực sự của chúng lại khác nhau.

Mục đích của Tính đa hình

Lập trình viên có thể tận dụng Tính đa hình trong OOP vào các trường hợp sau:

Tìm hiểu thêm: Công ty ma là gì? Cách nhận biết Công ty ma

Khi các lớp con cần dùng phương thức của lớp cha để bổ sung cho một phương thức khác.Khi một lớp cần có nhiều phương thức cùng tên nhưng khác tham số (parameter).

Tính đa hình trong OOP dùng để chỉ việc nhiều phương thức cùng tên nhưng chức năng khác nhau (Nguồn: Unsplash).Tính đa hình dùng để chỉ việc nhiều phương thức cùng tên nhưng chức năng khác nhau (Nguồn: Unsplash).

Vì sao phải dùng Tính đa hình?

Nhìn chung, nếu lập trình viên tận dụng đã được Tính đa hình thì sẽ mang lại nhiều lợi ích trong quá trình phát triển phần mềm. Các lợi ích đó có thể là:

Lập trình viên chưa phải viết lại mã hoặc lớp đã có sẵn. Sau khi một đoạn mã hoặc lớp được khởi tạo thành công, ta có thể tái sử dụng chúng nhờ vào Tính đa hình.Lập tình viên có thể dùng một tên duy nhất để lưu trữ biến của nhiều kiểu dữ liệu khác nhau (float, double, long, int,…).Lập trình viên có thể phát triển thêm Tính trừu tượng từ các đoạn mã đơn giản. mọi người có thể tham khảo nội dung này ở các bài viết liên quan.

Minh họa về Tính đa hình

Tính đa hình trong đời sống

Bạn hãy thử tưởng tượng nếu bạn yêu cầu các người sau thực hiện hành động “CẮT”:

Bác sĩ phẫu thuậtNhà tạo mẫu tócDiễn viên

Tham khảo thêm: Bảo trợ truyền thông chính là gì vậy? Cách tối ưu hoạt động này hiệu quả

Khi đó, chuyện gì cũng sẽ xảy ra?

Bác sĩ phẫu thuật cũng sẽ bắt đầu rạch dao mổ.Nhà tạo mẫu sẽ bắt đầu cắt tóc cho một ai đó.Nam diễn viên sẽ ngừng diễn cảnh hiện tại, chờ đạo diễn hướng dẫn.

thí dụ ở trên cho thấy bản chất của Tính đa hình. Nó tượng trưng cho việc cùng một tên gọi nhưng hành vi thì khác nhau.

Tính đa hình trong OOP

Sau đây là một thí dụ về Tính đa hình trong OOP được viết theo ngôn ngữ lập trình Python.

Minh họa về Tính đa hình trong OOP của ngôn ngữ Python.Minh họa về Tính đa hình trong OOP của ngôn ngữ Python.

Từ đoạn mã trên, mọi người thấy rằng trong chương trình có hai hàm cùng mang tên là “print”. Tuy nhiên, hai hàm lại có tham số khác nhau. Do đó, chức năng của hai hàm này cũng hoàn toàn khác nhau. Cụ thể:

Hàm print thứ số 1 có tham số kiểu chuỗi (string). Vì vậy, mục đích của hàm này là để in một chuỗi ra màn hình.Hàm print thứ hai có tham số kiểu danh sách (list). Vì vậy, mục đích của hàm này là để in một danh sách ra màn hình. Trong trường hợp trên chính là danh sách kiểu số nguyên (int).

Các loại đa hình cần biết

Tính đa hình trong OOP gồm có hai loại: Đa hình thời gian chạy (Runtime Polymorphism) , và Đa hình thời gian biên dịch (Compile Time Polymorphism).

Theo đó, Tính đa hình cho phép một phương thức thực thi các hành vi khác nhau theo hai hướng: sử dụng phương thức ghi đè (method overriding) hoặc phương thức nạp chồng (method overloading).

Đa hình thời gian chạy

Đây là trường hợp một đối tượng bị ràng buộc với chức năng của chúng ngay tại thời gian chương trình đang chạy.

Tham khảo thêm: [2020] Phân biệt Tuyển thẳng , phương thức Xét tuyển thẳng kết hợp của Trường ĐH Hàng hải Việt Nam | TUYỂN SINH 2022

Đa hình thời gian chạy sử dụng phương thức ghi đè. Cụ thể, lớp con cũng sẽ dùng lại một phương thức cùng tên với phương thức sẵn có của lớp cha.

Minh họa về phương thức ghi đè trong ngôn ngữ lập trình Python.Minh họa về phương thức ghi đè trong ngôn ngữ lập trình Python.

Đa hình thời gian biên dịch

Đây chính là trường hợp một đối tượng bị ràng buộc với chức năng của chúng ngay tại thời gian chương trình đang biên dịch.

Đa hình thời gian biên dịch sử dụng phương thức nạp chồng. Cụ thể, các phương thức hoặc hàm có thể cùng tên, nhưng cũng sẽ khác một vài tham số (parameter) đã được truyền vào trong lệnh gọi. Tùy vào số lượng tham số được truyền vào mà phương thức đó cũng sẽ cho ra các kết quả khác nhau.

chú ý về Tính đa hình

Vẫn còn một điểm mà bạn cần chú ý về Tính đa hình. Đó là mỗi ngôn ngữ lập trình khác nhau lại có cách tiếp cận khác nhau. Chẳng hạn, Java, C ++ có trợ giúp phương thức nạp chồng nhưng Python, JavaScript thì không.

Trong Python, bạn có thể dùng phương thức nạp chồng nhưng chương trình cũng sẽ chỉ ghi nhớ lần khởi tạo cuối cùng. Do đó, khi sử dụng ngôn ngữ nào thì bạn cần phải điều tra thật kỹ về Tính đa hình của ngôn ngữ bạn đang dùng để làm chủ nó tốt hơn.

Tóm lại, Tính đa hình là một tính chất hay mà lập trình viên nên tận dụng. Hy vọng qua bài viết, Bạn sẽ có góc nhìn rõ ràng hơn về Tính đa hình trong OOP.

Tham khảo: sentayho.com.vn

Xem thêm: ” Ma Lai Rút Ruột Là Gì – Sự Thật Về Ó Ma Lai Ở Tây Nguyên

Bạn thấy bài viết thế nào?

Tìm hiểu thêm: Sodium Lauryl Sulfate: Là chất gì và tại sao chúng ta nên tránh?