본문 바로가기
Java_language

메서드 오버로딩 (Method Overloading)

by 헬로제이콥 2025. 11. 24.

 

🔄 메서드 오버로딩 (Method Overloading)

메서드 오버로딩이란 자바(Java)에서 하나의 클래스 안에 이름이 같은 메서드를 여러 개 만들 수 있도록 허용하는 기능입니다.

쉽게 말해, 같은 목적(예: '더하기'나 '계산하기')을 가진 도구를 여러 버전으로 만드는 것이라고 생각할 수 있습니다.


🔑 오버로딩의 규칙 (조건)

메서드 오버로딩이 성립하기 위해서는 이름이 같은 메서드들이 반드시 다음 두 가지 조건 중 하나 이상을 만족해야 합니다.

  1. 매개변수의 개수가 달라야 합니다. (가장 흔한 경우)
  2. 매개변수의 타입이 달라야 합니다. (예: 정수 int 대신 실수 double를 사용)
  3. 매개변수의 순서가 달라야 합니다. (타입이 다를 경우에만 해당)

⚠️ 주의: 메서드의 반환 타입($\text{return type}$)만 다르거나,
매개변수 이름만 다른 것은 오버로딩으로 인정되지 않습니다.


📝 오버로딩 예제

계산기 클래스를 만들어 '더하기'라는 이름의 메서드를 여러 버전

Java
 
public class Calculator {

    // 1. 매개변수가 2개인 더하기 (정수 2개 합)
    public int 더하기(int a, int b) {
        System.out.println("정수 2개 더하기 버전 실행");
        return a + b;
    }

    // 2. 매개변수의 '개수'가 다름 (정수 3개 합) -> 오버로딩 성립
    public int 더하기(int a, int b, int c) {
        System.out.println("정수 3개 더하기 버전 실행");
        return a + b + c;
    }

    // 3. 매개변수의 '타입'이 다름 (실수 2개 합) -> 오버로딩 성립
    public double 더하기(double a, double b) {
        System.out.println("실수 2개 더하기 버전 실행");
        return a + b;
    }
}

💻 메서드 호출과 선택

자바는 우리가 메서드를 호출할 때 넘겨주는 인수(Argument)의 개수와 타입을 보고,
어떤 더하기 메서드를 실행할지 자동으로 결정합니다.

Java
 
public static void main(String[] args) {
    Calculator calc = new Calculator();
    
    // ① 인수가 2개의 정수(int)이므로 1번 메서드가 호출됨
    int result1 = calc.더하기(10, 5); 
    
    // ② 인수가 3개의 정수(int)이므로 2번 메서드가 호출됨
    int result2 = calc.더하기(10, 5, 2); 
    
    // ③ 인수가 2개의 실수(double)이므로 3번 메서드가 호출됨
    double result3 = calc.더하기(10.5, 5.2);
    
    /*
    출력 결과:
    정수 2개 더하기 버전 실행
    정수 3개 더하기 버전 실행
    실수 2개 더하기 버전 실행
    */
}

🌟 오버로딩을 사용하는 이유

메서드 오버로딩을 사용하면 프로그래밍을 더 직관적이고 편리하게 만들 수 있습니다.

  1. 일관성 유지: 기능은 같지만 처리하는 데이터가 다를 때, 메서드 이름을 하나로 통일할 수 있습니다. (예: intAdd, doubleAdd 대신 그냥 더하기만 사용)
  2. 가독성 증가: 사용자(프로그래머)가 메서드의 기능(더하기)을 이름만 보고 바로 알 수 있습니다.
  3. 편의성 제공: 어떤 타입이나 개수의 데이터를 넘기든, 프로그래머는 항상 똑같은 이름의 메서드만 호출하면 됩니다.

'Java_language' 카테고리의 다른 글

자바 범위 (Scope)  (0) 2025.11.24
메서드 오버라이딩 (Method Overriding)  (0) 2025.11.24
자바 메서드(Method)  (0) 2025.11.24
반복문 , 배열 (Array) 기타 예제  (0) 2025.11.24
Scanner 일반변수,배열변수 입력받기  (0) 2025.11.24