Quá tải phương phápPhương pháp tối đa được sử dụng trước đó hoạt động chỉ với kiểu dữ liệu int. Nhưng nếu bạn cần phải tìm hai floating-point số có giá trị tối đa? Giải pháp là tạo ra một phương pháp có cùng tên nhưng thông số khác nhau, như thể hiện trong đoạn mã sau:khu vực tối tĩnh đôi (tăng gấp đôi num1, đôi num2) {} Nếu (num1 > num2) trở về num1; khác trở về num2;}Nếu bạn gọi tối đa với tham số int, phương pháp tối đa dự kiến int tham số sẽ được kích hoạt; Nếu bạn gọi tối đa với tham số đôi, phương pháp tối đa sẽ tăng gấp đôi thông số sẽ được kích hoạt. Điều này được gọi là phương pháp quá tải; có nghĩa là, hai phương pháp có tên tương tự nhưng khác nhau tham số liệt kê trong một lớp học. Trình biên dịch Java xác định phương pháp được sử dụng dựa trên chữ ký phương pháp.Danh sách 5.4 là một chương trình mà tạo ra ba phương pháp. Người đầu tiên tìm thấy số nguyên tối đa, tìm thấy thứ hai đôi tối đa, và thứ ba thấy tối đa trong số ba giá trị đôi. Tất cả ba phương pháp được đặt tên max. Đầu ra của chương trình được hiển thị trong hình 5.7.Con số 5,7. Chương trình invokes ba phương pháp tối đa khác nhau tất cả đều có cùng tên: max (3, 4), tối đa (3.0, 5.4), và max (3.0, 5.4, 10.14).Danh sách 5.4. TestMethodOverloading.java (Khoản mục này được hiển thị trên trang 137-138 trong phiên bản in) 1 công cộng lớp TestMethodOverloading {} 2 / ** chính phương pháp * / 3 công tĩnh void main (String [] args) {} 4 / / gọi phương pháp tối đa với tham số int 5 System.out.println ("tối đa giữa 3 và 4 là" 6 + max (3, 4)); 7---[Trang 138] 8 / / gọi phương pháp tối đa với các thông số đôi 9 System.out.println ("tối đa giữa 3.0 và 5.4 là"10 + max (3.0, 5.4));1112 / / gọi phương pháp tối đa với ba tham số đôi13 System.out.println ("tối đa giữa 3.0, 5.4, và 10.14 là"14 + max (3.0, 5.4, 10.14));15}1617 / ** trở lại tối đa giữa hai int giá trị * /18 int công cộng tĩnh max (int num1, int num2) {}19 nếu (num1 > num2)20 trở về num1;21 khác22 quay num2;23}2425 / ** Tìm tối đa giữa hai giá trị đôi * /26 khu vực tĩnh đôi max (tăng gấp đôi num1, đôi num2) {}27 nếu (num1 > num2)28 trở về num1;29 khác30 trở về num2;31}3233 / ** trở lại tối đa trong số ba giá trị đôi * /34 khu vực tĩnh đôi max (tăng gấp đôi num1, num2 đôi, đôi num3) {}35 trở về max (max (num1, num2), num3);36}37} Khi gọi tối đa (3, 4) (dòng 6), phương pháp tối đa cho việc tìm kiếm tối đa của hai số nguyên kích hoạt. Khi gọi tối đa (3.0, 5.4) (dòng 10), phương pháp tối đa cho việc tìm kiếm tối đa là 2 giường đôi gọi. Khi gọi tối đa (3.0, 5.4, 10.14) (đường 14), phương pháp tối đa cho việc tìm kiếm tối đa là ba giá trị đôi gọi.Bạn có thể gọi phương pháp tối đa với một giá trị int và một giá trị đôi, chẳng hạn như tối (2, 2.5)? Nếu vậy, các phương pháp tối đa gọi? Câu trả lời cho câu hỏi đầu tiên là có. Câu trả lời cho thứ hai là phương pháp tối đa cho việc tìm kiếm tối đa là hai giá trị đôi gọi. Giá trị đối số 2 tự động chuyển đổi thành một giá trị đôi và thông qua với phương pháp này.Bạn có thể tự hỏi tại sao tối đa phương pháp (tăng gấp đôi, gấp đôi) không gọi cho các cuộc gọi tối đa (3, 4). Cả hai tối đa (tăng gấp đôi, gấp đôi) và tối đa (int, int) là có thể phù hợp cho tối đa (3, 4). Trình biên dịch Java tìm thấy phương pháp đặt cụ thể cho một lời gọi phương pháp. Kể từ khi các phương pháp tối đa (int, int) là thêm cụ thể hơn tối đa (đôi, đôi), max (int, int) được sử dụng để gọi tối (3, 4).Mẹo Quá tải phương pháp có thể làm cho chương trình rõ ràng hơn và dễ đọc hơn. Phương pháp thực hiện chặt chẽ liên quan đến nhiệm vụ nên được cung cấp cùng tên. Lưu ý Quá tải phương pháp phải có danh sách các tham số khác nhau. Bạn không thể quá tải phương pháp dựa trên công cụ điều chỉnh khác nhau hoặc trở về loại. --------------------------------------------------------------------------------[Trang 139]Lưu ý Đôi khi có là hai hoặc nhiều trận đấu có thể cho một invocation của một phương pháp, nhưng trình biên dịch không thể xác định trận đấu cụ thể nhất. Điều này được gọi là lời gọi mơ hồ. Mơ hồ invocation gây ra một lỗi biên soạn. Hãy xem xét mã sau đây:công cộng lớp AmbiguousOverloading {} công tĩnh void main (String [] args) {} System.out.println (tối đa (1, 2)); } khu vực tĩnh đôi max (int num1, đôi num2) {} Nếu (num1 > num2) trở về num1; khác trở về num2; } khu vực tĩnh tăng gấp đôi tối đa (đôi num1, int num2) {} Nếu (num1 > num2) trở về num1; khác trở về num2; }}Cả hai tối đa (int, đôi) và tối đa (đôi, int) là có thể ứng cử viên để phù hợp với tối đa (1, 2). Vì không phải của họ là cụ thể hơn khác, lời gọi là mơ hồ, dẫn đến một lỗi biên soạn.
đang được dịch, vui lòng đợi..
