Quá tải phương thức, còn được gọi là nạp chồng hàm hoặc Đa hình thời gian biên dịch, là một khái niệm có hai hoặc nhiều phương thức có cùng tên nhưng chữ ký khác nhau trong cùng một phạm vi. Có nhiều ngôn ngữ lập trình hỗ trợ tính năng này: Ada, C ++, C #, D và Java.
Ví dụ về quá tải phương thức trong C #
class OverloadShapes {float Đa giác (int radius, float pi) {float circleArea = pi * radius * radius; } int Polygon (int length, int Breadth) {int hình chữ nhậtArea = length * chiều rộng; } int Polygon (int side) {int vuôngArea = side * side; }}1 2 3 4 5 6 7 8 9 10 11 12 13 14 | class OverloadShapes {float Đa giác (int radius, float pi) {float circleArea = pi * radius * radius; } int Polygon (int length, int Breadth) {int hình chữ nhậtArea = length * chiều rộng; } int Polygon (int side) {int vuôngArea = side * side; }} |
Như trong ví dụ trên, phương thức 'Đa giác' bị quá tải 3 lần với chữ ký phương thức khác nhau, tức là loại hoặc số lượng tham số là khác nhau.
Phương pháp ghi đè
Ghi đè phương thức, còn được gọi là Ghi đè hàm hoặc Đa hình thời gian, là một tính năng OOP cho phép một lớp con cung cấp triển khai riêng cho phương thức được định nghĩa trong lớp cha. Việc triển khai trong lớp con ghi đè định nghĩa của phương thức trong lớp cơ sở, với điều kiện là phương thức trong lớp con phải có cùng tên, chữ ký và kiểu trả về.
Ví dụ về Phương thức ghi đè trong C #
class Source1 {public void draw () {Console.Writeline ("Tôi đang ở trong lớp Source1"); }} lớp Source2 mở rộng Source1 {public void draw () {Console.Writeline ("Tôi đang ở trong lớp Source2"); }}1 2 3 4 5 6 7 8 9 10 | class Source1 {public void draw () {Console. Writeline ("Tôi đang ở lớp Nguồn1"); }} lớp Source2 mở rộng Source1 {public void draw () {Console. Writeline ("Tôi đang ở trong lớp Source2"); }} |
Ở đây, phương thức vẽ trong lớp Source2 ghi đè phương thức vẽ được định nghĩa trong lớp Source1.
Sự khác biệt giữa quá tải phương thức và ghi đè phương thức
- Trong Phương thức nạp chồng phương thức phải có chữ ký khác. Trong phương thức, các phương thức ghi đè phải có cùng chữ ký.
- Quá tải chức năng là để thêm vào các ứng dụng khác Chức năng ghi đè là hoàn toàn thay đổi thành công và thay đổi định nghĩa về hành vi của một phương thức.
- Quá tải phương thức được sử dụng để đạt được đa hình thời gian biên dịch; ghi đè phương thức được sử dụng để đạt được đa hình thời gian chạy.
- Trong trình biên dịch nạp chồng phương thức / hàm biết đối tượng nào được gán cho lớp nào tại thời điểm biên dịch, nhưng trong phương thức ghi đè thông tin này không được biết cho đến khi chạy.
- Quá tải chức năng diễn ra trong cùng một lớp trong khi Quá trình ghi đè diễn ra trong một lớp xuất phát từ một lớp cơ sở.