Java 메서드 오버로딩과 재귀 호출

코딩Java
읽는데 5분 소요
처음 쓰여진 날: 2026-02-17
마지막 수정일: 2026-05-19
조회수:

요약

Java 메서드 오버로딩(Overloading)의 개념과 재귀 호출(Recursion)을 알아봅니다. 같은 이름의 메서드가 매개변수 타입에 따라 다르게 호출되는 원리와, 오버로딩된 메서드 간 전환을 이해하여 정보처리기사 실기 문제를 풀어봅니다.

오버로딩 핵심 정리

개념설명예시
오버로딩같은 이름, 다른 매개변수의 메서드calc(int) vs calc(String)
호출 결정 기준전달하는 인자의 타입calc(5) -> calc(int) 호출
Integer.valueOf()문자열을 정수로 변환Integer.valueOf("5") -> 5
재귀 호출메서드가 자기 자신을 호출return calc(n-1) + calc(n-2)

메서드 오버로딩이란? 쌩기초

오버로딩(Overloading) 은 같은 이름의 메서드를 매개변수의 타입이나 개수를 다르게 하여 여러 개 정의하는 것입니다.

Overload는 over(더) + load(싣다), 즉 같은 이름에 메서드를 더 얹는다는 뜻입니다. 하나의 이름에 여러 메서드를 실어놓고, 매개변수 타입에 따라 골라 쓰는 것이므로 "오버로딩"입니다.

오버로딩 어원: 아버지 감자가 탄 말에 아들 감자가 다른 가방을 추가로 싣고 있다
Overload = 더 싣기. 같은 말(같은 이름)에 int 가방과 String 보따리를 함께 싣습니다.
java
코드 하이라이팅 중...

위 코드에서 calc(int value)calc(String str)는 이름은 같지만 매개변수 타입이 다릅니다. Java는 전달하는 인자의 타입에 따라 어떤 메서드를 호출할지 자동으로 결정합니다.

java
코드 하이라이팅 중...
메서드 오버로딩과 재귀 호출 개념
왼쪽: calc(int)와 calc(String)은 이름은 같지만 매개변수 타입이 다릅니다. 오른쪽: 재귀 호출로 calc(4)가 calc(3)과 calc(2)를 다시 호출합니다.

오버로딩 vs 오버라이딩

오버로딩과 오버라이딩은 이름이 비슷하지만 완전히 다른 개념입니다.

구분오버로딩 (Overloading)오버라이딩 (Overriding)
의미같은 이름의 메서드를 여러 개 정의부모 메서드를 자식이 재정의
매개변수다름 (타입 또는 개수)같음
클래스 관계같은 클래스 내에서도 가능부모-자식 간
결정 시점컴파일 시 (인자 타입 기준)실행 시 (실제 객체 기준)

Integer.valueOf() 쌩기초

Integer.valueOf()는 문자열을 정수로 변환하는 메서드입니다. 자세한 설명은 기본 제공 클래스 페이지를 참고하세요.


재귀 호출이란? 기초

재귀 호출(Recursion) 은 메서드가 자기 자신을 다시 호출하는 것입니다. 종료 조건이 없으면 무한히 호출되므로 반드시 종료 조건이 필요합니다.

재귀 호출 추적 방법

재귀 호출은 작은 값부터 먼저 계산하면 쉽게 풀 수 있습니다.


오버로딩 + 재귀: 메서드 전환 기초

시험에서 가장 중요한 패턴은 오버로딩된 메서드 사이에서 전환이 일어나는 경우입니다.

java
코드 하이라이팅 중...

핵심: calc(String)에서 calc(int)로 전환

calc(String str) 메서드 안에서 calc(value - 1)을 호출할 때, valueint 타입입니다.

java
코드 하이라이팅 중...
코드인자 타입호출되는 메서드
calc("5")Stringcalc(String str)
calc(value - 1)intcalc(int value)
calc(value - 3)intcalc(int value)

calc(String)은 한 번만 호출되고, 그 안에서 calc(int)로 전환됩니다. 이후로는 calc(int) 메서드끼리만 재귀 호출합니다.


컴파일타임 바인딩 심화

오버로드 선택은 컴파일 시점에 선언 타입을 기준으로 결정됩니다. 26년1회 실기에서 처음 출제된 핵심 패턴이며, 자세한 동작 원리와 단계별 풀이는 Java 컴파일타임 바인딩 페이지에서 다룹니다.


문제 풀이 전략 심화

풀이 순서

  1. 메서드 구분: 같은 이름의 메서드가 여러 개면 매개변수 타입 확인
  2. 첫 호출 확인: 전달하는 인자 타입에 따라 어떤 메서드가 호출되는지 확인
  3. 메서드 전환 확인: 메서드 내부에서 다른 타입의 인자로 호출하면 다른 메서드로 전환
  4. 재귀 추적: 작은 값부터 계산하여 결과 도출

자주 하는 실수

실수올바른 이해
calc(value - 1)이 calc(String)을 호출한다고 생각value는 int이므로 calc(int) 호출
calc("5")에서 재귀가 계속 calc(String)이라고 생각Integer.valueOf() 이후 int로 전환
큰 값부터 계산하려고 함작은 값(0, 1)부터 순서대로 구하기

정보처리기사 실기 기출 문제

Java 메서드 오버로딩과 재귀 호출 | 정처기 감자