OVERLOAD LÀ GÌ

     

Overloading (Nạp chồng phương thức) với Overriding (ghi đè phương thức) là hai quan niệm cơ phiên bản trong thiết kế mà bất cứ newbie nào cũng cần phân biệt. Vậy chúng là gì? khác nhau thế nào? Hãy thuộc mình phân tích và tìm hiểu nhé.

Bạn đang xem: Overload là gì

Overloading (Nạp chồng phương thức) là gì?

Overloading là 1 trong những kĩ thuật được cho phép trong cùng một class tất cả thể có rất nhiều phương thức thuộc tên nhưng không giống nhau về con số tham số hoặc kiểu tài liệu tham số. Ví dụ chúng ta có hàm tinhTong dùng để làm cộng hai số nguyên. Khi mong cộng bố số nguyên đời nào tôi lại đề xuất viết một hàm với tên khác(chẳng hạn tinhTong1) với truyền vào 3 số nguyên giỏi sao? bởi thế thì code vẫn trở nên phức tạp hơn trong những lúc hai hàm có cùng một mục tiêu là cộng những số nguyên lại cùng với nhau. Như vậy họ sẽ overload hàm tinhTong như sau:

*

Khi điện thoại tư vấn hàm tinhTong và truyền vào con số tham số khác biệt thì sẽ điện thoại tư vấn tới hàm có số lượng tham số tương ứng

*

Chú ý vào cửa sổ "Watch 1" ta thấy quý giá của hai đổi mới a và b lần lượt là giá trị trả về của hai hàm tinhTong(int a, int b) cùng hàm tinhTong(int a, int b, int c)

Tương từ bỏ chứ ta hoàn toàn có thể overload kiểu tài liệu của tham số. Thay vì hàm tinhTongcộng nhị số nguyên thì tôi cũng có thể cộng nhị số thực, chỉ việc truyền vào 2 tham số dạng hình double.

*

Tương tự giá bán trị vươn lên là c là cực hiếm trả về của hàm tinhTong(double a, double b) sau thời điểm truyền vào hai tham số hình dạng double.

Xem thêm: Cách Copy Video Từ Iphone Vào Máy Tính Bằng Itools, Copy Video Vào Iphone Bằng Itools

*

Tạo constructor với con số tham số không giống nhau cũng là 1 dạng của oveloading.

Overriding (Ghi đè phương thức) là gì?

Overrding (tên vừa đủ là Method Overriding), được thực hiện trong trường hòa hợp lớp con kế thừa từ lớp cha và ao ước định nghĩa lại một thủ tục đã xuất hiện ở lớp cha. Một lớp cha thông thường sẽ có thể có rất nhiều lớp nhỏ kế thừa, mặc dù phương thức sinh hoạt lớp phụ vương có thể tương xứng với lớp nhỏ này mà lại không tương xứng với lớp con khác, cho nên vì thế lớp con cần ghi đè lại thủ tục đó mang lại phù hợp. Lấy một ví dụ class Animal gồm phương thức animalSound thay mặt cho tiếng kêu của động vật. Class Dog với Cat thừa kế từ class Animal, dẫu vậy chó và mèo bao gồm tiếng kêu khác biệt nên đề xuất implement thủ tục animalSound cho từng lớp khác nhau. Do vậy rất cần được ghi đè lại cách thức animalSound ở hai lớp Dog và Cat bằng phương pháp sử dụng từ khóa override như sau(lưu ý lấy một ví dụ minh họa thực hiện code C#, hầu như ngôn ngữ khác biệt sẽ overriding theo cú pháp không giống nhau nhưng về thực chất là như nhau).

Xem thêm: Tuổi Xông Nhà Năm Tân Sửu 2021, Tuổi Nào Xông Đất Tốt Nhất Cho Năm Mới Tân Sửu

*

Ở hàm main tạo ra instance của class Animal, Dog và mèo sẽ cho công dụng như sau.

*

=> Kết quả

*

So sánh

OverloadingOverriding
Thể hiện nhiều hình tại compile timeThể hiện nhiều hình tại runtime
Thêm hành vi cho phương thứcThay đổi hành vi bây giờ của phương thức
Có thể khác nhau về con số và kiểu dữ liệu của tham sốSố lượng và kiểu dữ liệu của tham số yêu cầu giống nhau
Xảy ra trong và một classXảy ra ở cả 2 class có quan hệ kế thừa

Hi vọng qua nội dung bài viết này bạn bè sẽ hiểu rõ hơn và không còn nhầm lẫn giữa hai khái niệm này nữa. Thanks ~