nạp chồng phương thức
Chủ đề mới và thú vị của chúng ta ngày hôm nay là nạp chồng phương thức . Hãy cẩn thận - không được nhầm lẫn nạp chồng phương thức với ghi đè phương thức.
Không giống như ghi đè, quá tải là một hoạt động rất đơn giản. Nó thực sự không phải là một hoạt động trên các phương pháp, mặc dù đôi khi nó được gọi bằng thuật ngữ đa hình tham số khủng khiếp .
Vấn đề ở đây là tất cả các phương thức trong một lớp phải có tên duy nhất. Chà, điều đó không hoàn toàn chính xác. Chà, chính xác hơn, điều đó không chính xác chút nào. Tên phương thức không nhất thiết phải là duy nhất. Điều phải là duy nhất là sự kết hợp của tên phương thức và các loại tham số của phương thức. Liên kết này được gọi là chữ ký phương thức
Ví dụ:
Mã số | Sự miêu tả |
---|---|
|
Điều này được cho phép. Hai phương pháp có tên duy nhất. |
|
Và cả điều này nữa. Hai phương pháp có tên duy nhất (chữ ký). |
|
Các phương pháp vẫn là duy nhất |
|
Nhưng điều này không được phép . Các phương pháp không phải là duy nhất . Mặc dù họ trả về các loại khác nhau. |
|
Nhưng bạn có thể làm điều này . Các tham số của phương thức là duy nhất |
Chữ ký bao gồm tên phương thức và các loại tham số . Nó không bao gồm kiểu trả về của phương thức và tên tham số . Một lớp không thể có hai phương thức có cùng chữ ký — trình biên dịch sẽ không biết nên gọi phương thức nào.
Tên tham số không quan trọng vì chúng bị mất trong quá trình biên dịch. Khi một phương thức được biên dịch, chỉ có tên và kiểu tham số của nó được biết. Kiểu trả về không bị mất, nhưng kết quả của phương thức không phải được gán cho bất kỳ thứ gì, vì vậy nó cũng không được bao gồm trong chữ ký.
Theo nguyên tắc OOP , tính đa hình đang ẩn các triển khai khác nhau đằng sau một giao diện duy nhất. System.out.println()
Ví dụ, khi chúng ta gọi phương thức, các phương thức khác nhau được gọi tùy thuộc vào đối số nào được truyền vào. Đây là đa hình trong hành động.
Đó là lý do tại sao các phương thức khác nhau có tên giống hệt nhau chứa trong cùng một lớp được coi là một dạng đa hình yếu.
GO TO FULL VERSION