Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

자바(Java)에서 같은 이름의 메서드를 여러 개 정의할 수 있을까요?

네, 가능합니다. 자바에서는 클래스 안에 같은 이름의 메서드를 여러 개 정의할 수 있습니다. 단, 각 메서드의 매개변수 타입이나 개수가 서로 달라야 한다는 조건이 필요합니다.

이처럼 같은 이름의 메서드를 매개변수만 다르게 하여 여러 개 정의하는 기법을 메서드 오버로딩(Method Overloading)이라고 부릅니다. 컴파일러는 메서드 호출 시 전달된 인자의 타입과 개수를 확인하여, 그에 맞는 적절한 메서드를 자동으로 선택합니다. 이는 자바에서 대표적인 컴파일 타임 다형성(정적 다형성)의 예이기도 합니다.

아래 예제에서는 세 개의 display() 메서드를 같은 이름으로 정의했지만, 매개변수 구성이 서로 다릅니다. 호출 시 어떤 인자를 전달하느냐에 따라 알맞은 메서드가 실행됩니다.

예제 코드

public class MethodWthSameNameTest {
    public void display() { // 매개변수가 없는 메서드
        System.out.println("display() method with no parameter");
    }
    public void display(String name) { // 매개변수가 하나인 메서드
        System.out.println("display() method with a single parameter");
    }
    public void display(String firstName, String lastName) { // 매개변수가 여러 개인 메서드
        System.out.println("display() method with multiple parameters");
    }
    public static void main(String args[]) {
        MethodWthSameNameTest test = new MethodWthSameNameTest();
        test.display();
        test.display("raja");
        test.display("raja", "ramesh");
    }
}

실행 결과

display() method with no parameter
display() method with a single parameter
display() method with multiple parameters

오버로딩 시 주의사항

메서드 오버로딩이 성립하려면 매개변수의 타입, 개수, 순서 중 최소 하나 이상이 달라야 합니다. 반면 리턴 타입만 다른 경우에는 오버로딩으로 인정되지 않으므로 컴파일 오류가 발생한다는 점을 유의해야 합니다.