Menu
CoddyTech

메서드 오버로딩

Coddy Java 여정의 기초 섹션에 포함된 레슨. 73개 중 54번째.

Java에서 메서드 오버로딩을 사용하면 이름은 같지만 매개변수가 다른 여러 메서드를 정의할 수 있습니다. 즉, 비슷한 기능을 수행하지만 서로 다른 데이터 유형이나 서로 다른 개수의 인수를 사용하는 여러 메서드를 만들 수 있습니다.

핵심은 오버로드된 각 메서드의 메서드 시그니처가 고유해야 한다는 점이야. 메서드 시그니처는 메서드 이름과 매개변수의 유형 및 순서에 따라 결정돼.

메서드 오버로딩의 핵심 규칙은 다음과 같습니다:

  1. 같은 이름: 오버로드된 모든 메서드는 이름이 같아야 합니다.
  2. 매개변수 차이: 메서드의 각 버전은 매개변수의 개수가 다르거나, 매개변수의 자료형이 다르거나, 둘 다 달라야 합니다.
  1. 반환 유형만으로는 충분하지 않음: 오버로드된 메서드는 반환 유형만 달라서는 안 됩니다. 매개변수 목록이 서로 달라야 합니다.

메서드 오버로딩을 설명하는 예시는 다음과 같습니다.

public class MathUtils {
    public static int add(int a, int b) {
    	return a + b;
    }

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

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

이 예제에는 add라는 이름의 메서드가 세 개 있습니다. 첫 번째 메서드는 정수 두 개를 더하고, 두 번째 메서드는 실수 두 개를 더하며, 세 번째 메서드는 정수 세 개를 더합니다.

Java는 메서드 호출 중 전달된 인수를 바탕으로 호출할 메서드를 결정합니다.

인수 유형과 정확히 일치하는 오버로드가 없으면, Java는 암시적 확대 변환으로 도달할 수 있는 메서드를 선택합니다. 예를 들어, display(int a)와 display(double a)가 있을 때 display(5.0f) 호출은 double 버전을 사용합니다. float은 double로 확대 변환될 수 있지만, 캐스트 없이는 int가 될 수 없기 때문입니다.

메서드 오버로딩을 사용하면 코드를 더 읽기 쉽고 재사용하기 좋게 만들 수 있습니다. 비슷한 작업을 수행하는 메서드에 서로 다른 이름을 붙이는 대신(예: addInts, addDoubles, addThreeInts), 하나의 이름인 add를 사용하고 컴파일러가 문맥에 따라 적절한 메서드를 선택하도록 할 수 있습니다.

기억하세요. 오버로딩에는 매개변수 이름이나 반환형만 다른 것이 아니라 매개변수의 자료형이나 개수가 달라야 합니다.

직접 해보기

이 레슨에는 코드 챌린지가 없습니다.

quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

기초의 모든 레슨

직접 연습해 보세요: 온라인 Java 컴파일러