// 1. 오버로딩 X (매개변수 개수, 타입이 모두 같음) => 메서드 중복정의
int add(int a, int b) { return a + b; }
int add(int x, int y) { return x + y; }
// 2. 오버로딩 X (반환 타입은 영향 없음) => 메서드 중복정의
int add(int a, int b) { return a + b; }
long add(int a, int b) { return a + b; }
// 3. 오버로딩 O (매개변수 타입이 다름)
long add(int a, long b) { return a + b; }
long add(long a, int b) { return a + b; }
예제3에서 add(3, 3); 을 호출한다면?
둘 다 실행될 수 있기 때문에 ambiguous error가 출력된다.
올바른 예
class MyMath3 {
int add(int a, int b) {
return a+b;
}
long add(int a, long b) {
return a+b;
}
int add(int[] a) {
int result = 0;
for(int i=0; i < a.length;i++)
result += a[i];
return result;
}
}