Bên trong C#, Overload và Override đóng 2 vai trong khác nhau, bài viết này sẽ giải thích sự khác nhau giữa hai thành phần trên.
Overload: có tác dụng nạp chồng các hàm có thông số đầu vào khác nhau. Ví dụ public void print() sẽ có thêm hàm nạp chồng là public void print(string content). Cách khai báo hàm và tên hàm giống nhau, chỉ khác nhau về các thông số đầu vào. Ví dụ khác là các hàm dựng cũng được gọi là overload.
Trong khi đó, override cũng mang cụm từ “over” nhưng lại thực hiện chức năng khác so với overload.
Override: thường được thấy trong các lớp con khi kế thừa các chức năng (function) từ lớp cha (hoặc mẹ). Nó có chức năng ghi đè lên các hàm đã được khai báo ở lớp cha. Ví dụ: ở class Animal có hàm speak() sẽ in ra “clap clap”, ở lớp kế thừa ví dụ class Cat sẽ dùng override speak() và đã được chỉnh sửa in ra dòng “meow meow”.
Lưu ý: để hàm override dùng được nó còn phụ thuộc vào cách khai báo của lớp cha khi hàm ở lớp cha có chứa “virtual”. Nếu không có “virtual”, thì lớp con sẽ không thể ghi đè.