Overriding vs Overloading
Overriding (Ghi đè phương thức):
Định nghĩa:
- Overriding xảy ra khi một lớp con cung cấp phần triển khai cụ thể của một phương thức đã được định nghĩa trong lớp cha.
Tính chất:
- Các phương thức phải có cùng tên, cùng kiểu trả về và cùng danh sách tham số.
- Chỉ áp dụng cho các phương thức của instance (không áp dụng cho các phương thức static).
Kế thừa:
- Overriding liên quan đến mối quan hệ kế thừa giữa các lớp. Phương thức bị ghi đè phải được định nghĩa trong lớp cha.
Truy cập:
- Phương thức ghi đè trong lớp con phải có mức độ truy cập tương đương hoặc lớn hơn so với phương thức trong lớp cha (ví dụ: public có thể ghi đè protected, nhưng protected không thể ghi đè public).
Mục đích:
- Dùng để cung cấp phần triển khai cụ thể cho một phương thức đã được định nghĩa chung trong lớp cha, giúp lớp con có thể thay đổi hành vi của phương thức đó.
Overloading (Nạp chồng phương thức):
Định nghĩa:
- Overloading xảy ra khi có nhiều phương thức cùng tên trong cùng một lớp nhưng có danh sách tham số khác nhau (số lượng hoặc kiểu tham số khác nhau).
Tính chất:
- Các phương thức phải có cùng tên nhưng khác nhau về danh sách tham số.
- Có thể áp dụng cho các phương thức static và instance.
Kế thừa:
- Overloading không yêu cầu mối quan hệ kế thừa và chỉ xảy ra trong cùng một lớp.
Truy cập:
- Không yêu cầu sự thay đổi về mức độ truy cập giữa các phương thức nạp chồng.
Mục đích:
- Dùng để tạo ra nhiều phiên bản của một phương thức, cho phép chúng ta gọi phương thức cùng tên với các tham số khác nhau.

Đăng nhận xét