클래스 내 같은 이름의 메소드를 여러 개 선언하는 것을 말한다.
매개값을 다양하게 처리할 수 있기 때문에 필요하다.
1) 메소드 이름이 같아야 한다.
2) 매개변수 갯수나 타입이 달라야 한다.
3) 반환 타입은 영향없다.
//오버로딩이 아닌 예시1 : 1)번 조건만 성립, 매개변수 갯수 타입도 같다.
//=> 메소드 중복정의, 에러남: add(int, int) 이미 정의되어있다
int add(int a, int b) {return a+b;}
int add(int x, int y) {return x+y;}
//오버로딩이 아닌 예시2 : 1)번 조건만 성립, 반환타입 다른 것은 상관이 없다.
//=> 메소드 중복정의
int add(int a, int b) {return a+b;}
long add(int a, int b) {return (long)(a+b);}
//오버로딩 : 1), 2)번 조건 성립
long add(int a, int b) {return a+b;}
long add(long a, long b) {return a+b;}
//메소드 3개 이름이 같고 매개변수 타입이 다르다.
class MyMath {
int add(int a, int b) {
System.out.print("int add(int a, int b) - ");
return a+b;
}
long add(long a, long b) {
System.out.print("long add(int a, int b) - ");
return a+b;
}
int add(int[] a) { //배열의 모든 요소의 합을 결과로 돌려준다.
System.out.print("int add(int[] a) - ");
int result=0;
for(int i=0; i<a.length; i++)
result+=a[i];
return result;
}
}