Nạp chồng phương thức
Khi bạn tạo hai phương thức có cùng tên, nhưng số lượng tham số khác nhau (hoặc kiểu của tham số khác nhau), bạn đã nạp chồng phương thức đó. Đây là một mặt mạnh của đối tượng. Môi trường chạy thi hành của Java sẽ quyết định phiên bản nào của phương thức được gọi, dựa trên những thứ mà bạn truyền vào. Trong trường hợp các hàm tạo của chúng ta, nếu bạn không truyền vào bất cứ tham số nào thì JRE sẽ dùng hàm tạo không tham số. Nếu ta truyền vào hai đối tượng kiểu String thì môi trường chạy thi hành sẽ dùng phiên bản nhận hai tham số String. Nếu ta truyền vào các tham số có kiểu khác (hoặc là chỉ một String) thì môi trường chạy thi hành sẽ nhắc rằng không có hàm tạo nào nhận những tham số kiểu đó.Bạn có thể nạp chồng bất cứ phương thức nào chứ không phải chỉ hàm tạo, việc này khiến cho việc tạo các giao diện thuận tiện cho người dùng sử dụng lớp của bạn trở nên dễ dàng. Hãy thử bằng cách bổ sung thêm phiên bản khác của phương thức addMoney() của bạn. Lúc này, phương thức đó nhận một tham số kiểu int. Tốt thôi, nhưng điều gì sẽ xảy ra nếu chúng ta muốn nạp thêm 100$ vào quỹ của Adult? Chúng ta phải gọi đi gọi lại phương thức này để thêm vào một loạt tờ giấy bạc có tổng giá trị là 100$. Thật là vô cùng bất tiện. Sẽ hay hơn nhiều nếu có thể truyền vào một mảng các phần tử int biểu thị cho một tập nhiều tờ giấy bạc. Ta hãy nạp chồng phương thức này để nhận tham số là một mảng. Đây là phương thức mà ta có:
PHP:
public void addMoney(int bill) {Integer boxedBill = new Integer(bill);wallet.add(boxedBill);
}
PHP:
public void addMoney(int[] bills) {
for (int i = 0; i < bills.length; i++) {int bill = bills[i];Integer boxedBill = new Integer(bill);wallet.add(boxedBill);
}
}
PHP:
public static void main(String[] args) {Adult myAdult = new Adult();
myAdult.addMoney(new int[] { 1, 5, 10 });System.out.println(myAdult);
}
0 nhận xét:
Đăng nhận xét