Study/Java
[Java] 오버로딩
운체
2020. 3. 10. 23:07
오버로딩
하나의 클래스 내에 같은 이름의 메소드를 여러 개 정의하는 것이다. 하나의 이름을 가진 메소드에 여러 가지 기능을 과적(overloading)한 것이라고 생각하면 된다.
오버로딩의 조건
- 메소드의 이름이 같고,
- 매개변수의 개수와 타입이 달라야 한다.
이름이 같아도 매개 변수로 구분이 가능해지기 때문에 오버 로딩이 성립하는 것이다.
오버로딩의 예시
println 메소드가 대표적인 예이다!
데이터 타입에 따라 오버로딩 된 메소드들 중 하나가 실행된다.
void println(int x);
void println(String x);
오버로딩의 장점
- 이름을 고민할 필요가 없어진다.
- 같은 기능을 하는데 파라미터가 다양한 경우, 오버로딩이 불가능하다면각자 다 다른 이름을 정해야 할 것이다. 이 문제를 해결해 주는 것이 바로 오버로딩이다.
- printlnInt(), printlnString() ... 이렇게 하나하나 다 정해줘야 했을 것이다.
- 같은 기능을 하는데 파라미터가 다양한 경우, 오버로딩이 불가능하다면각자 다 다른 이름을 정해야 할 것이다. 이 문제를 해결해 주는 것이 바로 오버로딩이다.
- 기능 예측이 쉬워진다.
- 메소드의 이름이 같으면 "같은 기능을 하겠구나"라는 예측이 가능해진다.
가변인자
메소드의 파라미터 개수를 동적으로 받는 것을 의미한다.
int add(int a, int b, int... args){ //int[] array 처럼 배열도 가능하다!
...
}
위에서 정의한 add 함수의 경우는 이렇다.
int형의 파라미터를 무조건 두 개를 받고, 추가적으로 add하고 싶은 파라미터를 추가적으로 넘겨줄 수 있는 것이다.
- 주의! 가변인자는 무조건 맨 뒤에 넣어주자. 동적으로 들어오기 때문에, 가변인자가 앞에 쓰이면 어디서부터 어디까지가 가변인자인지 판단이 되지 않기 때문이다.