본문 바로가기

Language/Java

02 Method - (5) Overrloading (매소드 재정의)

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