한 클래스 안에 같은 이름의 메서드 여러 개 정의하는 것
class MyMath4 {
int add(int a, int b) {
System.out.println("int add(int a,int b) 메서드 호출");
return a + b;
}
long add(long a,long b){
System.out.println("long add(long a,long b) 메서드 호출");
return a+b;
}
int add(int[] a){
System.out.println("int add(int[] a) 메서드 호출");
int total = 0 ;
for (int i=0; i<a.length; i++){
total+=a[i];
}
return total;
}
}
위의 코드는 add 메서드를 오버로딩한 코드 입니다.
public class JavaExercise_29 { // 오버로딩 실습
public static void main(String[] args) {
MyMath4 myMath4 = new MyMath4();
int result1 = myMath4.add(3,5);
System.out.println("int add(int a,int b) 메서드의 반환 값 : "+result1);
long result2 = myMath4.add(3,5L); // long(long a,long b) 메서드 호출
System.out.println("long add(long a,long b) 메서드의 반환 값 : "+result2);
long result3 = myMath4.add(3L,5); // long(long a,long b) 메서드 호출
System.out.println("long add(long a,long b) 메서드의 반환 값 : "+result3);
long result4 = myMath4.add(3L,5L);
System.out.println("long add(long a,long b) 메서드의 반환 값 : "+result4);
int[] a = {1,2,3,4,5};
int result5 = myMath4.add(a);
System.out.println("int add(int[] a) 메서드의 반환 값 : "+result5);
}
}
출력 결과:
int add(int a,int b) 메서드 호출
int add(int a,int b) 메서드의 반환 값 : 8
long add(long a,long b) 메서드 호출
long add(long a,long b) 메서드의 반환 값 : 8
long add(long a,long b) 메서드 호출
long add(long a,long b) 메서드의 반환 값 : 8
long add(long a,long b) 메서드 호출
long add(long a,long b) 메서드의 반환 값 : 8
int add(int[] a) 메서드 호출
int add(int[] a) 메서드의 반환 값 : 15
위의 코드는 인스턴스를 생성하고 각각의 메서드를 호출해 보는 코드와 출력 결과입니다. 결과를 보면 각각의 메서드의 매개변수 타입에 따라서 메서드가 호출되는 것을 확인할 수 있습니다.