Do sử dụng chung một cái tên cho nhiều phương thức, nên ta phải cho java biết cần phải gọi phương thức nào để thực hiện, java dựa vào sự khác nhau về số lượng đối cũng như kiểu dữ liệu của các đối này để phân biệt các phương thức trùng tên đó.
Ví dụ:
public class OverloadingOrder { static void print(String s, int i) { System.out.println(
"String: " + s + ", int: " + i); }
static void print(int i, String s) { System.out.println(
"int: " + i + ", String: " + s); }
public static void main(String[] args) { print("String first", 11);
print(99, "Int first"); }
Chú ý:
1) nếu nếu java không tìm thấy một hàm bội tải thích hợp thì nó sẽ đưa ra một thông báo lỗi
2) ta không thể sử dụng giá trị trả về của hàm để phân biệt sự khác nhau giữa 2 phương thức bội tải
3) không nên quá lạm dụng các phương thức bội tải vì trình biên dịch phải mất thời gian phán đoán để tìm ra hàm thích hợp, điều này đôi khi còn dẫn đến sai sót
4) khi gọi các hàm nạp chồng ta nên có lệnh chuyển kiểu tường minh để trình biên dịch tìm ra hàm phù hợp một cách nhanh nhất
5) trong java không thể định nghĩa chồng toán tử như trong ngôn ngữ C++, có thể đây là một khuyết điểm, nhưng những người thiết kế java cho rằng điều này là không cần thiết, vì nó quá phức tạp.
BÀI 5 KẾ THỪA (INHERITANCE) I. Lớp cơ sở và lớp dẫn xuất I. Lớp cơ sở và lớp dẫn xuất
- Một lớp được xây dựng thông qua kế thừa từ một lớp khác gọi là lớp dẫn xuất (hay còn gọi là lớp con, lớp hậu duệ ), lớp dùng để xây dựng lớp dẫn xuất được gọi là lớp cơ sở ( hay còn gọi là lớp cha, hoặc lớp tổ tiên )
• Một lớp dẫn xuất ngoài các thành phần của riêng nó, nó còn được kế thừa tất cả các thành phần của lớp cha