Sử dụng interface trong Java
1. Interface trong Java là gì? Một interface là một lớp trừu tượng hoàn toàn (completely...
Kết quả sẽ mở trong tab mới, giới hạn trong website này.
Truy cập nhanh
Tìm kiếm gần đây
1. Định nghĩa phương thức (method) Giả sử, cần tính tổng các số từ 1 đến 10, từ 25 đến 35 và từ 37 đến 49. Việc tính tổng từ 1-10, 25-35, và 37-49 là giống nhau. Có thể viết code một lần và tái sử dụng nó? Khái niệm phương thức (method) Một phương […]
Giả sử, cần tính tổng các số từ 1 đến 10, từ 25 đến 35 và từ 37 đến 49.
class Main {
public static void main(String[] args) {
int sum = 0;
for(int i=1; i<=10; i++){
sum += i;
}
System.out.println("Tong tu 1 den 10 la " + sum);
sum = 0;
for(int i=25; i<=35; i++){
sum += i;
}
System.out.println("Tong tu 25 den 35 la " + sum);
sum = 0;
for(int i=37; i<=49; i++){
sum += i;
}
System.out.println("Tong tu 37 den 49 la " + sum);
}
}
Việc tính tổng từ 1-10, 25-35, và 37-49 là giống nhau. Có thể viết code một lần và tái sử dụng nó?
class Main {
public static int sum(int a, int b){
int result = 0;
for(int i=a; i<=b; i++){
result += i;
}
return result;
}
public static void main(String[] args) {
System.out.println("Tong tu 1 den 10 la " + sum(1, 10));
System.out.println("Tong tu 25 den 35 la " + sum(25, 35));
System.out.println("Tong tu 37 den 49 la " + sum(37, 49));
}
}
Một phương thức (method) còn gọi là hàm, là một tập các câu lệnh được nhóm lại với nhau nhằm thực hiện một công việc nào đó.
modifier returnValueType methodName(list of parameters){
//method body
}
Một phương thức bao gồm method header và method body.
– modifier có thể là public, protected, private nhằm xác định phạm vi truy cập của phương thức.
– returnValueType là kiểu trả về của phương thức. Nếu phương thức không có kiểu trả về thì sử dụng void.
– methodName là tên của phương thức.
– list of parameters là danh sách các tham số của phương thức. Lưu ý, phương thức có thể không có tham số nào.
Khi phương thức được gọi, các tham số hình thức được thay thế bởi các biến hoặc dữ liệu, được gọi là các tham số thực sự (actual parameters).
int maxValue = max(3, 4);
System.out.println(max(3, 4));
Biến cục bộ (local variable) là biến được khai báo trong một phương thức hoặc trong một khối lệnh. Biến cục bộ có phạm vi sử dụng chỉ trong phần chương trình mà biến có thể được tham chiếu.
Có thể khai báo một biến cục bộ trùng tên nhiều lần trong các khối lệnh không lồng nhau. Nhưng không thể khai báo một biến cục bộ 2 lần trong các khối lồng nhau.
Ví dụ, định nghĩa phương thức max với các tham số kiểu int. Nhưng nếu cần phải tìm max của hai số double? Giải pháp là tạo ra một phương thức khác có cùng tên nhưng với các tham số có kiểu double. Đó gọi là nạp chồng phương thức.
Nạp chồng phương thức (overloading methods) cho phép định nghĩa các phương thức với tên giống nhau.
class Main {
/* Return the max of two int values */
public static int max(int num1, int num2) {
if (num1 > num2){
return num1;
}
return num2;
}
/* Find the max of two double values */
public static double max(double num1, double num2) {
if (num1 > num2){
return num1;
}
return num2;
}
/* Return the max of three double values */
public static double max(double num1,double num2,double num3) {
return max(max(num1, num2), num3);
}
public static void main(String[] args) {
System.out.println("The maximum of 3 and 4 is " + max(3, 4));
System.out.println("The maximum of 3.0 and 5.4 is " + max(3.0, 5.4));
System.out.println("The maximum of 3.0, 5.4, and 10.14 is " + max(3.0, 5.4, 10.14));
}
}
The maximum of 3 and 4 is 4
The maximum of 3.0 and 5.4 is 5.4
The maximum of 3.0, 5.4, and 10.14 is 10.14
Khi nạp chồng phương thức, có thể có nhiều hơn 1 kết quả trùng khớp cho 1 lời gọi hàm. Hiện tượng này gọi là lời gọi hàm mở hồ và làm chương trình sẽ gặp lỗi biên dịch.
class Main {
public static double max(int num1, double num2) {
if (num1 > num2){
return num1;
}
return num2;
}
public static double max(double num1, int num2) {
if (num1 > num2){
return num1;
}
return num2;
}
public static void main(String[] args) {
//ambiguous both method max
System.out.println("The maximum of 3 and 4 is " + max(3, 4));
}
}
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - reference to max is ambiguous both method max(int,double)Các bạn không nên lạm dụng nạp chồng phương thức để tránh lời gọi hàm mơ hồ.