1. 오버로딩이란?
- 하나의 메서드 이름으로 여러 기능을 담음
- 클래스 내에 같은 이름의 메서드 여러개 선언하는 것
2. 오버로딩의 조건
- 메서드명 동일
- 매개 변수의 타입, 개수, 순서가 달라야함
3. 오버로딩의 예
int plus(int x, int y) { return x + y; }
double plus(double x, double y) { return result; }
plus(1, 2);
plus(1.1, 2.2);
int x = 1;
int y = 2.2;
plus(x, y);
int divide(int x, int y) { ... }
double divide(int boonja, int boonmo) { ... }
void println() { ... }
void println(int x) { ... }
void println(boolean x) { ... }
void println(String x) { ... }
...
4. 오버로딩의 장점
- 하나의 이름으로 사용하기 때문에 같은 기능이라고 예측 가능
- 메서드 이름 절약
5. 가변인자(varargs)와 오버로딩
- 가변인자 : 여러 문자열을 하나로 결합하여 반환하는 메서드
String concatenate(String s1, String s2) { ... }
String concatenate(String s1, String s2, String s3) { ... }
String concatenate(String s1, String s2, String s3, String s4) { ... }
String concatenate(String...str) {...}
System.out.println(concatenate());
System.out.println(concatenate("a"));
System.out.println(concatenate("a", "b"));
System.out.println(concatenate(new String[] {"A", "B"}));
- 가변인자를 선언한 메서드를 오버로딩하면 메서드 구분이 안되어 'ambiguous' 에러 발생
- 가변인자를 사용한 메서드는 오버로딩 하지 않는 것이 바람직
String concatenate(String delim, String... args) {
...
}