PHÂN BIỆT OVERRIDING VÀ OVERLOADING - Hybrid Technologies
Có thể bạn quan tâm
Nội dung chính
- Overloading (Nạp chồng phương thức) là gì?
- Overriding (Ghi đè phương thức) là gì?
- So sánh
Overloading (Nạp chồng phương thức) và Overriding (ghi đè phương thức) là hai khái niệm cơ bản trong lập trình mà bất kì 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 cùng Hybrid Technologies phân tích và tìm hiểu trong bài viết này nhé!
Overloading (Nạp chồng phương thức) là gì?
Overloading là một kĩ thuật cho phép trong cùng một class có thể có nhiều phương thức cùng tên nhưng khác nhau về số lượng tham số hoặc kiểu dữ liệu tham số. Ví dụ chúng ta có hàm tinhTong dùng để cộng hai số nguyên. Khi muốn cộng ba số nguyên, bạn phải viết một hàm với tên khác (chẳng hạn tinhTong1) và truyền vào 3 số nguyên? Như vậy, code sẽ trở nên phức tạp hơn trong khi hai hàm có cùng một mục đích là cộng các số nguyên lại với nhau. Như vậy chúng ta sẽ overload hàm tinhTong như sau:
Khi gọi hàm tinhTong và truyền vào số lượng tham số khác nhau thì sẽ gọi tới hàm có số lượng tham số tương ứng
Chú ý vào cửa sổ “Watch 1” ta thấy giá trị của hai biến a và b lần lượt là giá trị trả về của hai hàm tinhTong(int a, int b) và hàm tinhTong(int a, int b, int c)
Tương tự ta có thể overload kiểu dữ liệu của tham số. Thay vì hàm tinhTong cộng hai số nguyên thì cũng có thể cộng hai số thực, chỉ cần truyền vào 2 tham số kiểu double.
Tương tự giá trị biến c là giá trị trả về của hàm tinhTong(double a, double b) sau khi truyền vào hai tham số kiểu double.
Tạo constructor với số lượng tham số khác nhau cũng là một dạng của oveloading.
Overriding (Ghi đè phương thức) là gì?
Overrding (tên đầy đủ là Method Overriding), được sử dụng trong trường hợp lớp con kế thừa từ lớp cha và muốn định nghĩa lại một phương thức đã có mặt ở lớp cha. Một lớp cha thông thường có thể có nhiều lớp con kế thừa, tuy nhiên phương thức ở lớp cha có thể phù hợp với lớp con này nhưng không phù hợp với lớp con khác, do đó lớp con cần ghi đè lại phương thức đó cho phù hợp.
Ví dụ class Animal có phương thức animalSound đại diện cho tiếng kêu của động vật. Class Dog và Cat kế thừa từ class Animal, nhưng chó và mèo có tiếng kêu khác nhau nên phải implement phương thức animalSound cho mỗi lớp khác nhau. Vì vậy cần phải ghi đè lại phương thức animalSound ở hai lớp Dog và Cat bằng cách sử dụng từ khóa override như sau(lưu ý ví dụ minh họa sử dụng code C#, những ngôn ngữ khác nhau sẽ overriding theo cú pháp khác nhau nhưng về bản chất là như nhau).
Ở hàm main tạo instance của class Animal, Dog và Cat sẽ cho kết quả như sau.
=> Kết quả
So sánh
| Overloading | Overriding |
| Thể hiện đa hình tại compile time | Thể hiện đa hình tại runtime |
| Thêm hành vi cho phương thức | Thay đổi hành vi hiện tại của phương thức |
| Có thể khác nhau về số lượng và kiểu dữ liệu của tham số | Số lượng và kiểu dữ liệu của tham số phải giống nhau |
| Xảy ra trong cùng một class | Xảy ra ở 2 class có quan hệ kế thừa |
Hy vọng qua bài viết này, các bạn sẽ hiểu rõ hơn và không còn nhầm lẫn giữa hai khái niệm trên. Chúc các bạn luôn thành công!
Nguồn: Tổng hợp
Facebook Comments PHÂN BIỆT OVERRIDING VÀ OVERLOADING4.5 (90%) 4 votesTừ khóa » Cách Dùng Overload
-
Override Và Overload - Viblo
-
Phân Biệt ý Nghĩa Và Cách Sử Dụng Overload Và Override
-
Bạn Đã Phân Biệt Được Overriding Và Overloading? - CodeLearn
-
Java Bài 29: Nạp Chồng Phương Thức (Overloading)
-
Overloading Method - Nạp Chồng Hàm Trong Java - STDIO
-
Overload Và Override Là Gì, So Sánh Overload Và Override - Hoclaptrinh
-
Nạp Chồng Hàm Trong C++ (Function Overloading) | How Kteam
-
Overriding Và Overloading Trong Java
-
Nạp Chồng Toán Tử Trong C++ | TopDev
-
Overload Trong Lập Trình C# - Minh Hoàng Blog
-
Ý Nghĩa Của Overload Trong Tiếng Anh - Cambridge Dictionary
-
Hàm Overload Và Hàm Override: Cách Sử Dụng Và Sự Khác Biệt
-
[Học OOP] Bài 7: Overload Toán Tử Trong Lập Trình Hướng đối Tượng ...
-
Nạp Chồng Phương Thức Trong Java - VietTuts