Sự khác biệt chính - Quá tải so với Ghi đè trong Java
Lập trình hướng đối tượng (OOP) là một mô hình chính trong phát triển phần mềm. Nó là một phương pháp luận để thiết kế một chương trình bằng cách sử dụng các lớp và đối tượng. Một lớp là một bản thiết kế. Nó mô tả những gì nên chứa trong đối tượng. Nó xác định các thuộc tính hoặc thuộc tính và các phương thức mà đối tượng nên bao gồm. Do đó, một đối tượng là một thể hiện của một lớp. Các đối tượng này giao tiếp với các đối tượng khác. Một khái niệm chính của OOP là Đa hình. Đó là khả năng một đối tượng hoạt động theo nhiều cách. Đa hình được phân loại thành hai phần là quá tải và ghi đè. Bài viết này thảo luận về sự khác biệt giữa hai điều này trong Java. Sự khác biệt chính giữa nạp chồng và ghi đè trong Java là tính năng Overloading là khả năng 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 và Overriding là cung cấp cách triển khai cho một phương thức lớp con đã tồn tại trong lớp cha.
Overloading trong Java là gì?
Overloading là khả năng 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. Tham khảo mã Java bên dưới.
Hình 01: Chương trình Java giải thích tính năng Overloading với nhiều đối số khác nhau
Theo chương trình trên, lớp A chứa hai phương thức trùng tên. Phương thức tổng đầu tiên có hai tham số. Phương thức tổng thứ hai có ba tham số. Khi tạo một đối tượng kiểu A và gọi sum (2, 3), nó sẽ gọi phương thức sum với hai tham số là sum (int a, int b) và trả về 5. Khi tạo đối tượng kiểu A và gọi sum (2, 3, 4), nó sẽ gọi phương thức sum khác với ba tham số là sum (int a, int b, int c) và trả về 9.
Tên phương thức giống nhau nhưng số lượng tham số khác nhau. Có thể quan sát thấy rằng cùng một đối tượng đang hoạt động khác nhau. Khái niệm này được gọi là quá tải. Nó còn được gọi là Liên kết tĩnh hoặc Đa hình thời gian biên dịch.
Cũng có thể bị quá tải với các kiểu dữ liệu khác nhau. Tham khảo mã Java bên dưới.
Hình 02: Chương trình Java giải thích tính năng Overloading với nhiều đối số khác nhau
Theo chương trình trên, lớp A bao gồm hai phương thức có cùng tên. Phương thức sum (int a, int b) nhận hai giá trị nguyên. Tổng (double a double b) nhận hai giá trị kép. Khi tạo đối tượng kiểu A và gọi sum (2, 3), nó sẽ gọi sum (int a, int b) và trả về giá trị 5. Khi gọi sum (3.4, 5.6), nó sẽ gọi sum (double a double b) và trả về giá trị 9.0. Trong ví dụ này, các phương thức có cùng tên, nhưng khác loại biến. Điều này cũng đang quá tải.
Ghi đè trong Java là gì?
Trong Java, có thể xây dựng các lớp con với các lớp đã tồn tại. Thay vì tạo lớp mới ngay từ đầu, có thể sử dụng các thuộc tính và phương thức của lớp đã tồn tại. Lớp hiện có là lớp cha và lớp dẫn xuất là lớp con. Khi lớp con cung cấp một triển khai cho một phương thức đã có trong lớp cha, nó được gọi là ghi đè. Tham khảo chương trình Java bên dưới.
Hình 03: Chương trình Java để ghi đè
Theo chương trình trên, Lớp A đang có một phương thức display (). Lớp B là mở rộng từ lớp A, do đó, các thuộc tính và phương thức của lớp A có thể được truy cập bởi lớp B. Lớp B có phương thức display () với một triển khai cụ thể. Khi tạo một đối tượng kiểu A và gọi phương thức hiển thị, nó sẽ cho kết quả là B. Mặc dù lớp A có phương thức hiển thị, nhưng nó bị ghi đè là phương thức hiển thị lớp B. Lớp con đang triển khai một phương thức đã tồn tại trong lớp cha.
Khái niệm này là một loại đa hình và được gọi là ghi đè. Nó còn được gọi là Liên kết muộn, Liên kết động, Đa hình thời gian chạy.
Điểm giống nhau giữa Nạp chồng và Ghi đè trong Java là gì?
- Cả hai đều là kiểu Đa hình.
- Trong nạp chồng và ghi đè, các phương thức có cùng tên.
Sự khác biệt giữa quá tải và ghi đè trong Java là gì?
Overloading so với Overriding trong Java |
|
Overloading trong Java là khả năng 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. | Ghi đè trong Java đang cung cấp một triển khai cụ thể trong phương thức lớp con cho một phương thức đã tồn tại trong lớp cha. |
Thông số | |
Khi nạp chồng, các phương thức có cùng tên nhưng khác số lượng tham số hoặc loại tham số khác. | Trong ghi đè, các phương thức có cùng tên và các tham số phải giống nhau. |
Chủ đề | |
Quá tải xảy ra trong lớp. | Ghi đè xảy ra trong hai lớp có mối quan hệ kế thừa. |
Từ đồng nghĩa | |
Quá tải được gọi là đa hình thời gian biên dịch. | Ghi đè được gọi là đa hình thời gian chạy. |
Tóm tắt - Quá tải so với Ghi đè trong Java
Đa hình là một khái niệm chính trong Lập trình hướng đối tượng. Nó cung cấp khả năng cho một đối tượng hoạt động theo nhiều cách. Điều này có thể là quá tải hoặc ghi đè. Ghi đè là đa hình thời gian biên dịch và ghi đè là đa hình thời gian chạy. Chúng rất hữu ích trong việc phát triển ứng dụng phần mềm. Sự khác biệt giữa ghi đè và nạp chồng là tính năng Ghi đè là khả năng tạo nhiều phương thức cùng tên với các cách triển khai khác nhau và Ghi đè là cung cấp một cách triển khai cụ thể trong phương thức lớp con cho một phương thức đã tồn tại trong lớp cha. Có thể thực hiện cả nạp chồng và ghi đè trong Java.
Tải xuống PDF Overloading vs Overriding trong Java
Bạn có thể tải xuống phiên bản PDF của bài viết này và sử dụng nó cho mục đích ngoại tuyến theo ghi chú trích dẫn. Vui lòng tải xuống phiên bản PDF tại đây Sự khác biệt giữa quá tải và ghi đè trong Java