본문 바로가기
쿤즈 Dev/Java

[Java] 메서드 오버로딩 (Method Overloading)

by Koonz:) 2023. 8. 27.
728x90

메서드 오버로딩은 지난 포스팅에서 확인했던 메서드의 개념에서 추가적인 개념이다. 메서드에 대해서 이해가 가지 않는 부분이 있다면 앞선 포스팅에서 확인하기 바란다.

2023.08.26 - [쿤즈 Dev/Java] - [Java] 메서드 (Method) 사용 방법

이번 포스팅에서는 메서드 오버로딩의 개념과 어떻게 사용하는지 알아보자.


메서드 오버로딩 (Method Overloading)

메서드 오버로딩(Method Overloading)은 동일한 메서드 이름을 가지면서 매개변수(parameter)의 개수나 타입이 다른 여러 개의 메서드를 정의하는 것을 말한다. 일반적으로 메서드 이름은 중복해서 사용할 수 없다. 하지만 오버로딩이라는 개념을 통해서 동일한 이름이지만 다르게 사용할 수 있다는 내용이다.

 

메서드 오버로딩을 사용하면 같은 기능을 수행하는 메서드들을 논리적으로 그룹화할 수 있으며, 코드의 가독성을 높이고 메서드의 다양한 호출 방법을 제공할 수 있다.


메서드 오버로딩 규칙

메서드 오버로딩의 규칙은 다음과 같다.

 

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 int add(int num1, int num2, int num3) {
        return num1 + num2 + num3;
    }
    
//    리턴타입은 오버로딩 규칙에 포함되지 않는다
//    public double add(int num1, int num2) {
//        return num1 + num2;
//    }
}

위의 예제에서 'Calculator' 클래스는 'add()'라는 이름의 메서드를 세 가지 버전으로 오버로딩했다.

첫 번째는 두 개의 정수를 받아서 더하고 정수를 반환한다. 두 번째는 두 개의 실수를 받아서 더하고 실수를 반환한다. 세 번째는 세 개의 정수를 받아서 더하고 정수를 반환한다. 이렇게 하면 상황에 맞게 다른 매개변수를 사용하여 메서드를 호출할 수 있다.

 

마지막에는 두 개의 정수를 받아서 더하고 반환하는 메서드지만 이미 두개의 정수를 받는 메서드가 있기 때문에 사용할 수 없다. 이렇게 메서드 오버로딩을 사용하면 동일한 작업을 수행하는 여러 메서드를 하나의 이름으로 표현할 수 있어 코드의 가독성과 유지 보수성을 향상시킬 수 있다.


이번 포스팅에서는 메서드 오버로딩에 대해서 살펴보았다. 자바로 프로그래밍을 하다보면 자주 마주하는 부분이며 익숙하게 사용을 하게 되는 규칙이다. 역시 연습만이 익숙함을 만들게 되는 것 같다.

댓글