오버로딩(overloading)
- 한 클래스 안에 같은 이름의 메서드를 여러 개 정의하는 것
void println();
void println(boolean x);
void println(char x);
void println(char[] x);
void println(double x);
void println(float x);
void println(int x);
void println(long x);
void println(Object x);
void println(String x);
오버로딩이 성립하기 위한 조건
- 메서드 이름이 같아야 함.
- 매개변수의 개수 또는 타입이 달라야 함.
- 반환 타입은 영향이 없음.
- 메서드 중복정의의 예시(1)
- int add(int a, int b){return a+b;}
- int add(int x, int y){return (long)(x+y);}
- 메서드 중복정의의 예시(2)
- int add(int a, int b){return a+b;}
- long add(int x, int y){return x+y;}
- 오버로딩은 성립하지만 error(ambiguous) 예시
- long add(int a, long b){return a+b;}
- long add(long x, int y){return x+y;}
- add(3, 3)을 했을 때 어느 메서드를 사용해야할지 모호함
오버로딩 예제
- 오버로딩의 올바른 예 - 매개변수는 다르지만 같은 의미의 기능을 수행함
class MyMath3{
int add(int a, int b){
return a+b;
}
long add(long 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;
}
}