목차
1. 오버로딩이란?
📌 메소드 오버로딩(Method Overloading)
프로그래밍을 하다 보면, 동일한 동작을 수행하지만 입력값(매개변수)이 다른 메소드를 만들고 싶은 경우가 있습니다. 이럴 때 사용하는 것이 메소드 오버로딩(Method Overloading)입니다.
💡 오버로딩(Overloading)이란, 같은 이름의 메소드를 여러 개 정의하되,
매개변수의 개수나 타입이 다르게 선언하는 것을 말합니다.
자바에서는 메소드 이름이 같아도 아래 조건 중 하나가 다르면 서로 다른 메소드로 인식합니다.
- 매개변수 개수
- 매개변수 자료형
- 매개변수의 순서
⚠️ 주의: 반환 타입(return type)은 오버로딩을 구분하는 기준이 되지 않습니다.
📌 오버로딩 예시
public class OverloadExample {
// 1. 매개변수가 없는 경우
public void print() {
System.out.println("이름이 없습니다.");
}
// 2. 매개변수가 하나인 경우
public void print(String name) {
System.out.println("이름은 " + name + "입니다.");
}
// 3. 매개변수가 두 개인 경우
public void print(String name, int age) {
System.out.println(name + "님의 나이는 " + age + "세입니다.");
}
public static void main(String[] args) {
OverloadExample oe = new OverloadExample();
oe.print(); // → 이름이 없습니다.
oe.print("홍길동"); // → 이름은 홍길동입니다.
oe.print("유관순", 18); // → 유관순님의 나이는 18세입니다.
}
}
2. 오버로딩의 장점
- 코드의 가독성이 좋아집니다.
- 같은 기능을 수행하는 메소드를 하나의 이름으로 관리할 수 있어 유지보수가 쉬워집니다.
- 매개변수만 다르면 자동으로 적절한 메소드가 호출되므로, 호출부가 간결해집니다.
3. 오버로딩과 혼동 주의
| 항목 | 설명 |
| ✅ 이름 동일 | 반드시 메소드 이름은 같아야 함 |
| ✅ 매개변수 다름 | 개수, 타입, 순서 중 하나 이상 달라야 함 |
| ❌ 반환형만 다름 | 반환형만 다르면 오버로딩으로 인식되지 않음 |
public int test(int a) { return a; }
// public String test(int a) { return String.valueOf(a); } // ⚠️ 컴파일 에러 발생
4. 정리
- 메소드 오버로딩은 하나의 이름으로 다양한 매개변수 상황을 처리할 수 있게 해 줍니다.
- 매개변수의 개수, 타입, 순서가 다르면 같은 이름의 메소드를 여러 번 정의할 수 있습니다.
- 오버로딩은 선택적 개념이지만 실무에서 자주 사용되며,
객체지향 프로그래밍의 다형성(polymorphism) 개념과도 연결됩니다.
🔜 오버로딩과는 별개로, 오버라이딩(Overriding)이라는 개념은 상속에서 다루게 됩니다.
이 둘은 이름이 비슷하지만 전혀 다른 개념이니 차차 구분할 수 있도록 합시다.
마무리
다음 게시글에서는 메소드의 반환값 에 대해 학습하겠습니다.
'study > Programming' 카테고리의 다른 글
| [JAVA 기초] static 메소드 vs 인스턴스 메소드 (1) | 2025.04.21 |
|---|---|
| [JAVA 기초] 메소드의 반환값 (return) (1) | 2025.04.20 |
| [JAVA 기초] 매개변수와 전달인자 (1) | 2025.04.18 |
| [JAVA 기초] 메소드 선언과 호출 구조 (1) | 2025.04.17 |
| [JAVA 기초] 메소드란? (1) | 2025.04.16 |