이전시간에 학습한 거듭제곱을 계산하는 예제를 통하여 메소드 오버로딩에 대하여 이해해보자.
getPower(int number) { return number * number; }
위 메소드를 호출하면 전달받은 인수 number값을 제곱하여 return 값을 반환한다.
위 사례의 경우 int 자료형으로 데이터가 선언되어있기 때문에 문자열로되어있는 숫자를 인수로 사용하는데 어려움이 있다. (Ex. "3", "45")
이를 해결하기 위하여 아래와 같이 문자열 숫자의 거듭제곱을 계산하기 위한 위한 메소드를 새로 생성한다고 생각해보자.
public static int getPowerStr(String Number) {
int number = Integer.parseInt(strNumber); //String -> int로 변환 ("3" -> 3)
return number*number; //int로 변환된 number의 제곱을 반환함.
}
각 인수의 자료형에 맞게 getPower(), getPowerStr()을 호출한다면 int, String 숫자를 받아 거듭제곱을 계산할 수는 있다.
하지만 위와 같이 메소드를 정의하게 되면 인수의 자료형 마다 메소드 이름을 구분하여 호출해야하는 번거로움이 있다.
이때 메소드 오버로딩을 활용하면 더욱 편리하게 거듭제곱을 계산할 수 있다.
위에서 생성했던 getPowerStr() 메소드를 getPower() 메소드로 이름을 수정해보자.
동일한 이름의 getPower()메소드가 두개 생성되었다.
그리고 각 메소드를 호출할 때 역시 getPower() 동일한 메소드 이름으로 호출하게 된다.
다만, 이 때 입력한 인수값의 자료형에 따라 메소드를 각각 나누어 실행하게 된다.
getPower(3); -> int 정수형 인수 전달 -> 첫번째 getPower(3) 메소드 실행 -> result = 3*3 -> 9 리턴
getPower("4"); -> String 문자열 인수 전달 -> 두번째 getPower("4") 메소드 실행
-> strNumber "4"를 int 형으로 변환 (4) -> 4*4 = 16 반환
동일한 이름의 메소드를 정의/호출하여서 전달값의 자료형에 따라 메소드를 각각 호출한다.(int / String)
이처럼 메소드 오버로딩은 전달값의 자료형이 다르거나 전달값의 개수가 다른 경우 똑같은 이름의 메소드를 중복해서 정의할 수 있는 특징을 가진다.
아래 예제에서는 전달값의 개수가 다른 getPower(int number, int exponent) 메소드를 추가로 생성하였다.
이처럼 전달값의 개수가 다른 경우에도 동일한 이름의 메소드를 정의할 수 있다는 점을 참고하자.
'Spec UP - Backend > 나도코딩의 자바기본편' 카테고리의 다른 글
Chap_06. 변수의 범위(Scope) (0) | 2023.04.19 |
---|---|
Chap_06. 메소드가 필요한 이유 (0) | 2023.04.19 |
Chap_06. 반환값(Return) (0) | 2023.04.18 |
Chap_06. 메소드 (Method), 전달값(Parameter) (0) | 2023.04.18 |
Chap_05. 배열을 활용한 사이즈 출력 Quiz (0) | 2023.04.14 |
댓글