● 오버로딩이란?
같은 이름의 메소드를 중복하여 정의하는 것을 의미한다. 자바에서는 원래 한 클래스 내에 같은 이름의 메소드를 둘 이상 가질 수 없습니다. 하지만 매개변수의 개수나 타입을 다르게 하면 하나의 이름으로 메소드를 작성할 수 있습니다.
int number;
int number;
만약 위 코드처럼 number라는 이름을 가진 변수를 두 번 선언하면 오류가 발생한다.
public class Main {
public static int getPower(int number){
int result = number * number;
return result;
}
public static int getPower(String strNumber){
int number = Integer.parseInt(strNumber);
return number * number;
}
public static int getPower(int number, int exponent){
int result = 1;
for (int i = 0; i < exponent; i++) {
result *= number;
}
return result;
}
public static void main(String[] args) {
System.out.println(getPower(3));
System.out.println(getPower("3"));
System.out.println(getPower(2,4));
}
}
이와 같이 Main클래스 내부에 getPower()이라는 이름을 가진 메소드가 3개가 있지만 매개변수의 타입이나 갯수가 다르므로 사용이 가능하다.
● 오버로딩의 조건
1. 메소드의 이름이 같아야 합니다.
- 위 코드 보시면 이름이 같은 getPower()이라는 메소드가 3개가 있지만 사용이 가능한 걸 볼 수 있다.
2. 매개변수의 개수 또는 타입이 달라야 합니다.
- 매개변수가 없는 메소드부터 1개, 2개가 있는 메소드가 있으며 개수가 같더라도 타입이 하나라도 다르면 오버로딩이 가능하다.
3. 매개변수의 개수와 타입은 같고, 리턴타입이 다른 경우는 오버로딩이 성립이 안 된다.
- 메소드를 호출하는 부분에서는 호출할 메소드의 이름과 매개변수 개수, 타입으로 구분짓기 때문에 return 타입이 다르다고 해서 오버로딩이 성립되지는 않는다.
● 오버로딩을 왜 사용할까?
- 오버로딩이 없을 경우 두 개의 매개변수를 받아서 정수 + 정수/ 정수 + 실수/ 실수 + 실수를 덧셈하는 add() 메소드를 다음과 같이 정의해야 한다.
int addInteger(int first, int second){
return first+second;
}
double addIntDouble(int first, double second){
return first+second;
}
double addDouble(double first, double second){
return first+second;
}
위 코드의 단점은 모두 덧셈하는 기능이지만 타입이 다르다는 이유로 메소드의 이름을 짓기가 어려웠다. 다음은 오버로딩을 사용한 코드이다.
int add(int first, int second){
return first+second;
}
double add(int first, double second){
return first+second;
}
double add(double first, double second){
return first+second;
}
매개변수가 다르지만 add()라는 메소드의 이름이 중복되도 괜찮기 때문에 각각의 메소드 이름을 짓는 번거로움에 벗어날 수 있고, add()라는 메소드 이름 하나만 기억하면 되가지고 부담이 덜 되는 장점이 있다.
'Java' 카테고리의 다른 글
[JAVA] Logging (로깅) (0) | 2023.10.26 |
---|---|
[JAVA] Stream 사용법과 구현 (0) | 2023.05.18 |
[JAVA] 배열(Array)을 익히고 구현하기 (0) | 2023.05.11 |
[JAVA] Queue의 자료구조의 이해, 구현과 사용법 익히기 (0) | 2023.05.10 |
[JAVA] Stack 자료구조의 이해와 사용법 (0) | 2023.05.10 |