Method Overloading trong JAVA | JAVA DEV

Nếu một class có nhiều phương thức có cùng tên, nhưng đối số khác nhau, nó được gọi là Method Overloading.

Method Overloading trong JavaTìm hiểu về Method Overloading trong Java
Đây là giải pháp tăng năng lực đọc của chương trình bằng cách tất cả chúng ta chỉ sử dụng một phương pháp .
Giả sử bạn phải triển khai một phép cộng, nhưng hoàn toàn có thể đồng ý bất kể đối số .

Ở trường hợp này, nếu bạn viết những phương pháp như là:

  • a(int, int) cho hai đối số
  • và b(int, int, int) cho ba đối số

… sẽ dẫn đến khá là khó khăn vất vả để đọc được hành vi của chúng vì tên những phương pháp khác nhau .
Vì thế, tất cả chúng ta triển khai nạp chồng phương pháp ( Method Overloading ) để lập trình nhanh hơn .
Có 2 cách để triển khai nạp chồng phương pháp :

  • Thay đổi số lượng đối số
  • Thay đổi kiểu dữ liệu

Lưu ý : Trong java, là không hề thực thi nạp chồng phương pháp chỉ bằng cách đổi khác kiểu trả về của phương pháp .

Ví dụ thực hiện Method Overloading bằng cách thay đổi số lượng đối số

Trong ví dụ này, tất cả chúng ta đã tạo hai phương pháp, phương pháp add ( ) tiên phong thực thi phép cộng hai số và phương pháp add thứ hai thực thi phép cộng ba số .
Trong ví dụ này, tất cả chúng ta đang tạo những phương pháp static để chúng tôi không cần tạo đối tượng người dùng khi gọi phương pháp trong main .

class Adder{
  
  // Phương thức cộng 2 số
  static int add(int a, int b){
    return a + b;
  } 
  // Phương thức cộng 3 số 
  static int add(int a, int b, int c){
    return a + b + c;
  }
}

class TestOverloading1{  
  public static void main(String[] args){
    System.out.println(Adder.add(10, 20));
    System.out.println(Adder.add(10, 20, 30));
  }
}

Kết quả :

30
60

Ví dụ thực hiện Method Overloading bằng cách thay đổi số kiểu dữ liệu

class Adder{
  
  // Phương thức cộng 2 số nguyên
  static int add(int a, int b){
    return a + b;
  } 
  // Phương thức cộng 2 số thập phân
  static double add(double a, double b){
    return a + b;
  }
}

class TestOverloading2{  
  public static void main(String[] args){
    System.out.println(Adder.add(10, 20));
    System.out.println(Adder.add(10.2, 10.3));
  }
}

Kết quả :

30
20.5

Câu hỏi 1: Tại sao không thể nạp chồng phương thức bằng cách thay đổi kiểu trả về của phương thức?

Trong Java, nạp chồng phương thức là không thể bằng cách thay đổi kiểu trả về của phương thức vì sự mơ hồ.

Chúng ta hãy xem sự mơ hồ hoàn toàn có thể xảy ra như thế nào :

class Adder{
  
  // Phương thức cộng 2 số nguyên
  static int add(int a, int b){
    return a + b;
  } 
  // Phương thức cộng 2 số thập phân
  static double add(double a, double b){
    return a + b;
  }
}

class TestOverloading3{
  public static void main(String[] args){
    System.out.println(Adder.add(10, 10)); // Không rõ ràng
  }
}

Kết quả :

Compile Time Error: method add(int, int) is already defined in class Adder

Lưu ý : Lỗi thời gian biên dịch tốt hơn lỗi runtime. Vì vậy, trình biên dịch java bộc lộ lỗi compiler time error nếu bạn khai báo cùng một phương pháp có cùng tham số .

Câu hỏi 2: Chúng ta có thể nạp chồng phương thức main không?

Câu vấn đáp là CÓ .
Bạn hoàn toàn có thể có bất kể số lượng phương pháp main nào trong một class bằng cách nạp chồng phương pháp .
Nhưng JVM gọi phương pháp main ( ) chỉ nhận mảng chuỗi dưới dạng đối số .
Hãy xem ví dụ đơn thuần :

class TestOverloading4{
 
  public static void main(String[] args){
    System.out.println("main with String[]");
  }

  public static void main(String args){
    System.out.println("main with String");
  }  
  
  public static void main(){
    System.out.println("main without args");
  }  
} 

Kết quả :

main with String[]

Bạn đã hiểu về Method Overloading chưa?

Vậy là bạn đã biết cách tối ưu hóa khả năng đọc của chương trình Java bằng cách thực hiện Method Overloading.

Chúc bạn học lập trình Java tốt !

JavaDEV