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

자바 메소드 오버로딩 완벽 이해하기: 정적 다형성의 기본

메소드 오버로딩(Method Overloading)은 정적 다형성(Static Polymorphism)에 해당하는 개념입니다. 메소드 오버로딩을 활용하면 이름은 동일하지만 매개변수의 개수나 타입이 서로 다른 여러 개의 메소드를 하나의 클래스 안에 정의할 수 있습니다. 컴파일러는 메소드가 호출될 때 전달된 인자를 분석하여 알맞은 메소드를 선택하며, 이 결정이 컴파일 시점에 이루어지기 때문에 '정적' 다형성이라고 부릅니다.

예제 코드

public class Tester {
    public static void main(String args[]) {
        Tester tester = new Tester();
        System.out.println(tester.add(1, 2));
        System.out.println(tester.add(1, 2, 3));
    }
    public int add(int a, int b) {
        return a + b;
    }
    public int add(int a, int b, int c) {
        return a + b + c;
    }
}

실행 결과

3
6

코드 설명

위 예제에서는 add() 메소드가 두 가지 형태로 오버로딩되어 있습니다.

  • add(int a, int b): 두 개의 정수를 받아 그 합계를 반환합니다.
  • add(int a, int b, int c): 세 개의 정수를 받아 그 합계를 반환합니다.

tester.add(1, 2) 호출에는 두 매개변수 버전이, tester.add(1, 2, 3) 호출에는 세 매개변수 버전이 자동으로 선택되어 각각 3과 6이 출력됩니다. 이처럼 하나의 메소드 이름으로 매개변수 구성에 따라 다르게 동작하도록 만드는 기법을 메소드 오버로딩, 즉 정적 다형성이라고 합니다.