오버로딩이 아닌 예1 - 변수 이름만 다름. 메서드 중복 정의.
int add(int a, int b) { return a + b; }
int add(int x, int y) { return x + y; }
오버로딩이 아닌 예2 - 반환 타입만 다르다. 메서드 중복 정의.
int add(int a, int b) { return a + b; }
long add(int a, int b) { return (long)(a + b); }
오버로딩의 예1
int add(int a, int b) { return a + b; }
long add(long a, long b) { return a + b; }
int add(int[] a) { return sum; }
오버로딩의 예2 - 매개변수의 타입이 다르다.
long add(int a, long b) { return a + b; }
long add(long a, int b) { return a + b; }
But, 위의 경우 add(3, 3) 호출 시 ambiguous error - 어떤 메서드를 호출하려는지 모호하다.