Overloading MethodsThe max method that was used earlier works only wit dịch - Overloading MethodsThe max method that was used earlier works only wit Việt làm thế nào để nói

Overloading MethodsThe max method t

Overloading Methods
The max method that was used earlier works only with the int data type. But what if you need to find which of two floating-point numbers has the maximum value? The solution is to create another method with the same name but different parameters, as shown in the following code:

public static double max(double num1, double num2) {
if (num1 > num2)
return num1;
else
return num2;
}



If you call max with int parameters, the max method that expects int parameters will be invoked; if you call max with double parameters, the max method that expects double parameters will be invoked. This is referred to as method overloading; that is, two methods have the same name but different parameter lists within one class. The Java compiler determines which method is used based on the method signature.

Listing 5.4 is a program that creates three methods. The first finds the maximum integer, the second finds the maximum double, and the third finds the maximum among three double values. All three methods are named max. The output of the program is shown in Figure 5.7.


Figure 5.7. The program invokes three different max methods that all have the same name: max(3, 4), max(3.0, 5.4), and max(3.0, 5.4, 10.14).




Listing 5.4. TestMethodOverloading.java
(This item is displayed on pages 137 - 138 in the print version)

1 public class TestMethodOverloading {
2 /** Main method */
3 public static void main(String[] args) {
4 // Invoke the max method with int parameters
5 System.out.println("The maximum between 3 and 4 is "
6 + max(3, 4));
7
--------------------------------------------------------------------------------[Page 138] 8 // Invoke the max method with the double parameters
9 System.out.println("The maximum between 3.0 and 5.4 is "
10 + max(3.0, 5.4));
11
12 // Invoke the max method with three double parameters
13 System.out.println("The maximum between 3.0, 5.4, and 10.14 is "
14 + max(3.0, 5.4, 10.14));
15 }
16
17 /** Return the max between two int values */
18 public static int max(int num1, int num2) {
19 if (num1 > num2)
20 return num1;
21 else
22 return num2;
23 }
24
25 /** Find the max between two double values */
26 public static double max(double num1, double num2) {
27 if (num1 > num2)
28 return num1;
29 else
30 return num2;
31 }
32
33 /** Return the max among three double values */
34 public static double max(double num1, double num2, double num3) {
35 return max(max(num1, num2), num3);
36 }
37 }




When calling max(3, 4) (line 6), the max method for finding the maximum of two integers is invoked. When calling max(3.0, 5.4) (line 10), the max method for finding the maximum of two doubles is invoked. When calling max(3.0, 5.4, 10.14) (line 14), the max method for finding the maximum of three double values is invoked.

Can you invoke the max method with an int value and a double value, such as max(2, 2.5)? If so, which of the max methods is invoked? The answer to the first question is yes. The answer to the second is that the max method for finding the maximum of two double values is invoked. The argument value 2 is automatically converted into a double value and passed to this method.

You may be wondering why the method max(double, double) is not invoked for the call max(3, 4). Both max(double, double) and max(int, int) are possible matches for max(3, 4). The Java compiler finds the most specific method for a method invocation. Since the method max(int, int) is more specific than max(double, double), max(int, int) is used to invoke max(3, 4).

Tip


Overloading methods can make programs clearer and more readable. Methods that perform closely related tasks should be given the same name.




Note


Overloaded methods must have different parameter lists. You cannot overload methods based on different modifiers or return types.




--------------------------------------------------------------------------------

[Page 139]
Note


Sometimes there are two or more possible matches for an invocation of a method, but the compiler cannot determine the most specific match. This is referred to as ambiguous invocation. Ambiguous invocation causes a compilation error. Consider the following code:

public class AmbiguousOverloading {
public static void main(String[] args) {
System.out.println(max(1, 2));
}

public static double max(int num1, double num2) {
if (num1 > num2)
return num1;
else
return num2;
}

public static double max(double num1, int num2) {
if (num1 > num2)
return num1;
else
return num2;
}
}



Both max(int, double) and max(double, int) are possible candidates to match max(1, 2). Since neither of them is more specific than the other, the invocation is ambiguous, resulting in a compilation error.

0/5000
Từ: -
Sang: -
Kết quả (Việt) 1: [Sao chép]
Sao chép!
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..
Kết quả (Việt) 2:[Sao chép]
Sao chép!
Quá tải phương pháp
Phương pháp tối đa đã được sử dụng trước đó chỉ làm việc với các kiểu dữ liệu int. Nhưng nếu bạn cần tìm mà của hai số dấu chấm động có giá trị tối đa? Giải pháp là tạo ra một phương pháp khác có cùng tên nhưng các thông số khác nhau, như thể hiện trong đoạn mã sau: public static max đôi (num1 đôi, num2 đôi) {if (num1> num2) trở num1; khác trở num2;} Nếu bạn gọi tối đa với các thông số int, các phương pháp tối đa mà dự kiến tham số int sẽ được gọi; nếu bạn gọi tối đa với các thông số tăng gấp đôi, phương pháp tối đa mà dự kiến thông số kép sẽ được gọi. Điều này được gọi là phương pháp quá tải; đó là, với hai phương thức có cùng tên nhưng danh sách tham số khác nhau trong một lớp. Trình biên dịch Java sẽ xác định phương pháp được sử dụng dựa trên các phương pháp chữ ký. Listing 5.4 là một chương trình tạo ra ba phương pháp. Việc đầu tiên tìm các số nguyên tối đa, thứ hai tìm tối đa gấp đôi, và thứ ba tìm tối đa trong ba giá trị gấp đôi. Tất cả ba phương pháp này được đặt tên là max. Các đầu ra của chương trình được thể hiện trong hình 5.7. Hình 5.7. Chương trình gọi ba phương pháp khác nhau mà max tất cả đều có cùng tên: max (3, 4), max (3.0, 5.4), và max (3.0, 5.4, 10.14). Listing 5.4. TestMethodOverloading.java (Mục này được hiển thị trên các trang 137-138 trong phiên bản in) 1 lớp nào TestMethodOverloading {2 / ** Phương pháp chính * / 3 static void main (String [] args) {công 4 // Gọi phương pháp max với int thông số 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 thức 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)) ; 11 12 // Gọi phương thức tối đa với ba thông số đôi 13 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} 16 17 / * * Quay trở lại tối đa giữa hai giá trị int * / 18 public static int max (int num1, num2 int) {19 if (num1> num2) 20 trở num1; 21 khác 22 trở num2; 23} 24 25 / ** Tìm max giữa hai giá trị double * / 26 public static double max (num1 đôi, num2 đôi) {27 if (num1> num2) 28 trở num1; 29 khác 30 trở num2; 31} 32 33 / ** Trả lại tối đa trong ba giá trị gấp đôi * / 34 public static max đôi (num1 đôi, num2 đôi, num3 đôi) {35 trở lại tối đa (max (num1, num2), num3); 36} 37} Khi gọi max (3, 4) (dòng 6), các phương pháp tối đa cho việc tìm kiếm tối đa của hai số nguyên được gọi. Khi gọi max (3.0, 5.4) (dòng 10), các phương pháp tối đa cho việc tìm kiếm tối đa là hai đôi được gọi. Khi gọi max (3.0, 5.4, 10.14) (dòng 14), các phương pháp tối đa cho việc tìm kiếm tối đa là ba giá trị đôi được gọi. Bạn có thể gọi phương thức tối đa với một giá trị int và một giá trị gấp đôi, như max (2, 2.5)? Nếu như vậy, mà trong những phương pháp tối đa được 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 các giá trị tối đa của hai đôi được gọi. Giá trị đối số 2 được tự động chuyển đổi thành một giá trị gấp đôi và truyền cho phương pháp này. Bạn có thể tự hỏi tại sao các phương pháp max (double, double) không được gọi cho các cuộc gọi tối đa (3, 4). Cả max (tăng gấp đôi, gấp đôi) và max (int, int) phù hợp nhất có thể cho tối đa (3, 4). Trình biên dịch Java tìm thấy các phương pháp cụ thể nhất cho một phương pháp gọi. Kể từ khi các phương pháp max (int, int) có đặc trưng hơn max (tăng gấp đôi, gấp đôi), max (int, int) được sử dụng để gọi max (3, 4). Mẹo phương pháp quá tải có thể làm cho chương trình rõ ràng và dễ đọc hơn. Phương pháp thực hiện nhiệm vụ liên quan chặt chẽ nên được đưa ra cùng tên. Lưu ý quá tải phương pháp phải có danh sách tham số khác nhau. Bạn không thể làm quá tải các phương pháp dựa trên modifier khác nhau hoặc các loại trở lại. -------------------------------------- ------------------------------------------ [Trang 139] Lưu ý Đôi khi có những hai hoặc nhiều hơn các trận đấu có thể cho một lời khẩn cầu của một phương pháp, nhưng trình biên dịch không thể xác định các trận đấu cụ thể nhất. Điều này được gọi gọi là mơ hồ. Gọi mơ hồ gây ra một lỗi biên dịch. Xem xét các mã sau đây: public class AmbiguousOverloading {public static void main (String [] args) {System.out.println (max (1, 2));} public static double max (int num1, num2 đôi) {if (num1 > num2) trở num1; khác trở num2;} public static max đôi (num1 double, int num2) {if (num1> num2) trở num1; khác trở num2;}} Cả max (int, double) và max (tăng gấp đôi, int) là ứng cử viên có thể để phù hợp với max (1, 2). Vì không phải của họ là đặc biệt hơn những người khác, những lời gọi là mơ hồ, dẫn đến một lỗi biên dịch.






















































































































đang được dịch, vui lòng đợi..
 
Các ngôn ngữ khác
Hỗ trợ công cụ dịch thuật: Albania, Amharic, Anh, Armenia, Azerbaijan, Ba Lan, Ba Tư, Bantu, Basque, Belarus, Bengal, Bosnia, Bulgaria, Bồ Đào Nha, Catalan, Cebuano, Chichewa, Corsi, Creole (Haiti), Croatia, Do Thái, Estonia, Filipino, Frisia, Gael Scotland, Galicia, George, Gujarat, Hausa, Hawaii, Hindi, Hmong, Hungary, Hy Lạp, Hà Lan, Hà Lan (Nam Phi), Hàn, Iceland, Igbo, Ireland, Java, Kannada, Kazakh, Khmer, Kinyarwanda, Klingon, Kurd, Kyrgyz, Latinh, Latvia, Litva, Luxembourg, Lào, Macedonia, Malagasy, Malayalam, Malta, Maori, Marathi, Myanmar, Mã Lai, Mông Cổ, Na Uy, Nepal, Nga, Nhật, Odia (Oriya), Pashto, Pháp, Phát hiện ngôn ngữ, Phần Lan, Punjab, Quốc tế ngữ, Rumani, Samoa, Serbia, Sesotho, Shona, Sindhi, Sinhala, Slovak, Slovenia, Somali, Sunda, Swahili, Séc, Tajik, Tamil, Tatar, Telugu, Thái, Thổ Nhĩ Kỳ, Thụy Điển, Tiếng Indonesia, Tiếng Ý, Trung, Trung (Phồn thể), Turkmen, Tây Ban Nha, Ukraina, Urdu, Uyghur, Uzbek, Việt, Xứ Wales, Yiddish, Yoruba, Zulu, Đan Mạch, Đức, Ả Rập, dịch ngôn ngữ.

Copyright ©2025 I Love Translation. All reserved.

E-mail: