Các sự khác biệt chính giữa ghi đè và quá tải trong C # là liên kết của cuộc gọi phương thức bị ghi đè đến định nghĩa của nó xảy ra trong thời gian chạy trong khi liên kết của cuộc gọi phương thức bị quá tải đến định nghĩa của nó xảy ra vào thời gian biên dịch.
C # là ngôn ngữ lập trình đa năng được phát triển bởi Microsoft. Ưu điểm chính của C # là nó hỗ trợ Lập trình hướng đối tượng (OOP). Một trụ cột của OOP là Đa hình. Nó cho một đối tượng để có nhiều hành vi. Có hai loại trong Đa hình được gọi là ghi đè và quá tải. Bài viết này thảo luận về sự khác biệt giữa ghi đè phương thức và quá tải trong C #.
1. Tổng quan và sự khác biệt chính
2. Ghi đè trong C # là gì
3. Quá tải trong C # là gì
4. Điểm tương đồng giữa ghi đè và quá tải trong C #
5. So sánh cạnh nhau - Ghi đè so với quá tải trong C # ở dạng bảng
6. Tóm tắt
Có một khái niệm quan trọng khác trong OOP là sự kế thừa. Đó là sử dụng các thuộc tính và phương thức của lớp đã tồn tại. Nó cải thiện khả năng sử dụng lại mã. Lớp đã có sẵn là lớp cơ sở và lớp mới được gọi là lớp dẫn xuất. Trong phần ghi đè của đa hình, cần có một lớp cơ sở và một lớp dẫn xuất. Các ràng buộc của cuộc gọi phương thức ghi đè đến định nghĩa xảy ra trong thời gian chạy. Một ví dụ như sau.
Hình 01: Chương trình C # có ghi đè
Theo chương trình trên, lớp Shape là lớp cơ sở và nó chứa phương thức hiển thị. Lớp hình chữ nhật và hình tam giác là các lớp dẫn xuất. Các lớp dẫn xuất này cũng có cùng hiển thị phương thức với các triển khai riêng của chúng.
Đầu tiên, biến tham chiếu obj được tạo. Nó trỏ đến đối tượng Shape. Vì vậy, phương thức hiển thị của lớp Shape sẽ thực thi. Sau đó, biến tham chiếu trỏ đến đối tượng Hình chữ nhật. Vì vậy, phương thức hiển thị của lớp Hình chữ nhật sẽ thực thi. Cuối cùng, biến tham chiếu trỏ đến đối tượng Tam giác. Vì vậy, phương thức hiển thị của lớp Triangle sẽ thực thi. Phương thức hiển thị lớp cơ sở bị ghi đè bởi các phương thức hiển thị của các lớp dẫn xuất.
Phương pháp để chạy được quyết định trong thời gian chạy. Lớp Shape được viết bằng từ khóa 'ảo'. Các lớp Hình chữ nhật và Tam giác được viết bằng từ khóa 'ghi đè'. Nếu các từ khóa này không được sử dụng, đầu ra sẽ in nội dung của phương thức hiển thị của lớp Shape cho tất cả.
Trong quá tải, nhiều phương thức có cùng tên nhưng với các tham số khác nhau. Các thông số có thể có nhiều loại khác nhau. Các phương thức cũng có thể có một số lượng tham số khác nhau. Quá tải phương thức xảy ra trong cùng một lớp. Sự ràng buộc của các phương thức quá tải với định nghĩa xảy ra tại thời điểm biên dịch. Tham khảo chương trình C # dưới đây.
Hình 02: Chương trình C # với quá tải
Theo chương trình trên, lớp A có hai phương thức có cùng tên gọi là sum. Họ có các loại tham số khác nhau. Trong chương trình chính, một đối tượng của A được tạo. Tổng (2,3) sẽ gọi phương thức tổng bằng số nguyên. Tổng (5.1, 7.94) sẽ gọi phương thức tổng với các giá trị kép. Cả hai phương thức có cùng tên và cùng một số tham số. Nhưng các loại tham số là khác nhau. Phương pháp cần thiết được gọi là phù hợp. Quá tải cũng có thể xảy ra nếu tên phương thức và kiểu tham số giống nhau nhưng số lượng tham số khác nhau.
Ghi đè so với Quá tải trong C # | |
Ghi đè trong C # là cung cấp một triển khai cụ thể trong phương thức lớp dẫn xuất cho một phương thức đã tồn tại trong lớp cơ sở. | Quá tải trong C # là tạo nhiều phương thức có cùng tên với các cách triển khai khác nhau. |
Thông số | |
Trong Ghi đè C #, các phương thức có cùng tên, cùng loại tham số và cùng số lượng tham số. | Trong quá tải C #, các phương thức có cùng tên nhưng một số tham số khác nhau hoặc một loại tham số khác. |
Tần suất xảy ra | |
Trong C #, ghi đè xảy ra trong lớp cơ sở và lớp dẫn xuất. | Trong C #, quá tải xảy ra trong cùng một lớp. |
Thời gian ràng buộc | |
Sự ràng buộc của cuộc gọi phương thức bị ghi đè đến định nghĩa của nó xảy ra trong thời gian chạy. | Sự ràng buộc của lời gọi phương thức quá tải đến định nghĩa của nó xảy ra tại thời điểm biên dịch. |
Từ đồng nghĩa | |
Ghi đè được gọi là đa hình thời gian chạy, đa hình động hoặc là Ràng buộc muộn. | Quá tải được gọi là biên dịch đa hình thời gian, đa hình tĩnh hoặc là ràng buộc sớm. |
Overriding và Overloading là hai loại đa hình. Sự khác biệt giữa ghi đè và nạp chồng trong C # là ràng buộc của lệnh gọi phương thức bị ghi đè đến định nghĩa của nó xảy ra trong thời gian chạy trong khi ràng buộc của lệnh gọi phương thức bị quá tải đến định nghĩa của nó xảy ra vào thời gian biên dịch.
1.Kumar, Mukesh. Góc C #. Có sẵn ở đây
2.tutorialspoint.com. Đa dạng C # đa hình. Hướng dẫn. Có sẵn ở đây
3.tutorialspoint.com. Các loại dữ liệu C #. Hướng dẫn Điểm, Có sẵn ở đây