1. 오버로딩 (재정의)이란?
같은 이름의 매소드를 여러 번 선언하는 것을 말한다.
오버로딩이 가능한 조건은
같은 이름의 매소드가 전달 받는 인수의 자료형이 다르거나(1), 전달 받는 인수의 갯수가 다를 때(2) 이다.
*반환 자료형이 다르다고 해서 오버로딩을 사용할 수 없다! (> 반환 자료형이 다른 같은 이름의 매소드를 재정의 시에는 중복으로 오류! )
2. 오버로딩은 어떤 때 유용한가?
오버로딩이 없는 경우, 같은 기능을 하는 매소드라도, 인수의 개수의 차이, 인수 자료형의 차이에 따라 모두 다른 이름으로 정의 해야한다.
이 경우 현재의 상황과 적합한 매소드를 호출하는데 혼란이 생길 가능성이 크다.
따라서 이 같은 경우 오버로딩을 통해 같은 기능의 매소드들을 하나의 이름으로 통일하는 것이 유용하다.
//getPower로 제곱, 문자열로 숫자가 들어온 경우, 지수 곱 전부 통일
// 제곱 매소드
public static int getPower (int number) {
int result = number * number;
return result;
// return number * number; 해도 됨.
}
// 문자열로 숫자가 들어온 경우
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 int getPower (int number) {
// int result = number * number;
// return result;
// return number * number; 해도 됨.
return getPower(number,2);
}
// 오버로딩 안한 경우
public static int getPowerStr (String strNumber) {
int number = Integer.parseInt(strNumber);
return number * number;
}
public static void main(String[] args) {
// 같은 기능을 하는데 다른 이름 == 혼란 초래
System.out.println(getPower(3)); // 9
System.out.println(getPowerStr("4")); // 16
// getPower 가 다른 자료형도 받을 수 있도록 오버로딩
System.out.println(getPower("4"));
// getPower 가 인수의 갯수가 많아져도 처리 가능하도록 오버로딩
System.out.println(getPower(3,3)); // 27
}
'Language > Java' 카테고리의 다른 글
02 Method - (7) Main Method (0) | 2023.01.16 |
---|---|
02 Method -(6) 변수의 범위 (0) | 2023.01.16 |
02 Method - (3) Return(반환 값) (0) | 2023.01.16 |
02 Method -(2) 파라미터 (0) | 2023.01.16 |
02 Method - (1) 매소드란 무엇인가? (0) | 2023.01.16 |