EEALL@ONCE

☕메소드 오버로딩(Method Overloading) 본문

언어💻/자바☕

☕메소드 오버로딩(Method Overloading)

올엣원스 2023. 8. 16. 17:25
728x90

메소드 오버로딩(Method Overloading)은 Java에서 동일한 메소드 이름을 가진 여러 메소드를 정의하는 것을 말합니다. 이들 메소드는 서로 다른 매개변수 목록을 가지며, 같은 작업을 수행하지만 다양한 입력을 처리하기 위해 사용됩니다. Java에서는 메소드 이름과 매개변수의 개수나 데이터 타입이 다르다면 같은 이름을 가진 메소드들을 정의할 수 있습니다.

메소드 오버로딩의 특징:

1. **메소드 이름이 같아야 합니다:** 동일한 이름을 가진 메소드를 여러 개 정의합니다.

2. **매개변수 목록이 달라야 합니다:** 메소드마다 매개변수의 개수 또는 데이터 타입이 달라야 합니다.

3. **반환 타입은 오버로딩과 관련이 없습니다:** 반환 타입은 오버로딩에 영향을 주지 않습니다.

메소드 오버로딩의 예제를 살펴보겠습니다:

public class Calculator {
    public int add(int num1, int num2) {
        return num1 + num2;
    }

    public double add(double num1, double num2) {
        return num1 + num2;
    }

    public String add(String str1, String str2) {
        return str1 + str2;
    }
}


위의 예제에서 `Calculator` 클래스는 `add` 메소드를 세 번 정의하였습니다. 각각의 메소드는 매개변수의 데이터 타입이나 개수가 다르지만, 모두 덧셈 연산을 수행합니다. 이렇게 메소드 오버로딩을 통해 여러 데이터 타입이나 다양한 입력을 처리하는 유연한 코드를 작성할 수 있습니다.

 

. **반환 타입은 오버로딩과 관련이 없습니다:** 반환 타입은 오버로딩에 영향을 주지 않습니다.

public int add(int a, int b) { return a + b; } 
public double add(int a, int b) { return a + b; }

`public int add(int a, int b)`와 `public double add(int a, int b)`는 반환 타입이 다르지 않아서 중복으로 간주됩니다. Java에서 메소드 오버로딩은 메소드의 이름과 매개변수 목록이 서로 다르거나, 매개변수의 데이터 타입이 서로 다른 경우에만 유효합니다. 반환 타입이 달라지는 것만으로는 메소드 오버로딩으로 간주되지 않습니다.

따라서 두 메소드의 경우, 매개변수 목록과 데이터 타입이 완전히 동일하기 때문에 중복으로 간주됩니다. 이런 경우에는 컴파일 오류가 발생할 것입니다.


매개변수 순서는 오버로딩에 영향을 줍니다.

static String add(String a, char b) {
    return a + b;
}

static String add(char a, String b) {
    return a + b;
}

주어진 두 메소드는 메소드 이름이 동일하지만 매개변수 목록이 다르기 때문에 Java에서는 메소드 오버로딩으로 인정됩니다. 매개변수 목록에 있는 데이터 타입 또는 데이터 타입의 순서가 다르기 때문에 이는 유효한 메소드 오버로딩의 예입니다.


이 경우에는 매개변수 목록에서 문자열(`String`)과 문자(`char`)의 조합이 다르므로, 두 메소드는 각각 다른 시그니처를 가지며, 이는 유효한 메소드 오버로딩입니다.

Java는 메소드 호출 시 전달되는 인자의 데이터 타입과 개수를 기반으로 어떤 메소드를 호출할지 결정합니다. 이런 메소드 오버로딩은 다양한 매개변수 조합으로 동일한 작업을 수행하는 메소드를 정의하거나, 다양한 데이터 타입을 허용하는 메소드를 구현할 때 유용합니다.

728x90