[JAVA] 오버로딩과 가변 인자

메서드 오버로딩과 가변 인자는 자바에서 메서드의 다양한 호출 방식과 유연성을 제공하는 중요한 개념입니다. 이를 통해 동일한 메서드 이름으로 다양한 매개변수를 처리하거나, 가변 개수의 인자를 전달할 수 있게 됩니다.

 

메서드 오버로딩

메서드 오버로딩은 같은 이름의 메서드를 여러 개 정의하되, 매개변수의 개수나 타입이 다르게하여 다양한 상황을 처리하는 개념입니다. 이는 메서드의 이름을 통일하면서도 다양한 형태의 호출을 지원하여 코드의 가독성과 재사용성을 높이는데 도움이 됩니다.

 

메서드 오버로딩 예제

public class Example {
    public static void main(String[] args) {
        int sumInt = add(5, 10);
        double sumDouble = add(2.5, 3.7);
        
        System.out.println("정수 합계: " + sumInt);
        System.out.println("실수 합계: " + sumDouble);
    }
    
    public static int add(int a, int b) {
        return a + b;
    }
    
    public static double add(double a, double b) {
        return a + b;
    }
}

메서드 오버로딩 주의사항

반환타입은 오버로딩을 구현하는데 관계가 없습니다. 메서드 시그니처는 동일하고 반환타입만 다를 경우 오버로딩은 되지 않습니다.

 

가변 인자

가변 인자는 메서드에 동적인 개수의 인자를 전달할 수 있게 해주는 기능입니다. 메서드 정의에서 매개변수 타입 뒤에 ...을 붙이는 형식으로 사용합니다. 동일한 타입의 인자를 여러 개 받는 경우에 유용합니다.

 

가변 인자 예제

public class Example {
    public static void main(String[] args) {
        int sum1 = addNumbers(1, 2, 3);
        int sum2 = addNumbers(5, 10, 15, 20);
        
        System.out.println(sum1); // 6
        System.out.println(sum2); // 50
    }
    
    public static int addNumbers(int... nums) {
        int sum = 0;
        for (int num : nums) {
            sum += num;
        }
        return sum;
    }
}