티스토리 뷰
Java
자바 - 메서드 오버로딩(Method Overloading) - "메서드의 이름만같으면 동일한 메서드 아닌가? 하나의 이름에는 하나의 메서드만이 존재할 수 있는 것이 아닌가?" 의문 해결하기
Kodong's blog 2025. 8. 15. 17:31public class ProcessMessage {
public static void printProcessMessage() {
// 아무것도 실행하지 않음
}
public static void printProcessMessage(String action) {
if ("execute".equals(action)) {
System.out.println("실행 중입니다! 💪");
// 실제 처리 로직
}
}
}
ProcessMessage.printProcessMessage(); // 첫 번째 호출 → 매개변수 없는 버전
ProcessMessage.printProcessMessage("execute"); // 두 번째 호출 → String 매개변수 있는 버전
여기서 printProcessMessage 라는 두개의 매개변수가 있다..
나는 의문이 들었다.
" 메서드의 이름만같으면 동일한 메서드 아닌가? 하나의 이름에는 하나의 메서드만이 존재할 수 있는 것이 아닌가?"
이번 포스팅은 이 의문을 해결하기 위한 포스팅이다.
이 의문을 해결하기 위해서는 메서드 오버로딩이라는 문법을 알아야한다.
■ "메서드 오버로딩" 이란?
▶ 같은 클래스에서 이름은 같지만 매개변수의 형태(개수, 타입, 순서)가 다른 메서드를 여러 개 정의하는 것.
▶ 호출 시 전달되는 인자(Argument)의 형태에 맞춰 컴파일 시점에 어떤 메서드를 부를지 결정됨 (컴파일타임 다형성).
□ 특징 ( gpt 형님 )
|특징| |설명|
| 이름 동일 | 메서드 이름이 동일해야 함 |
| 매개변수 다름 | 매개변수 개수, 자료형, 순서가 달라야 함 |
| 반환 타입 영향 X | 반환 타입만 달라서는 오버로딩 불가 |
| 컴파일 시점 결정 | 호출할 메서드가 컴파일 단계에서 정해짐 |
| 접근제어자 무관 | public, private, protected 상관없음 |
이해를 위한 예제!! )
public class Example {
// 매개변수 없음
void print() {
System.out.println("Hello");
}
// 매개변수 1개 (int)
void print(int number) {
System.out.println("숫자: " + number);
}
// 매개변수 1개 (String)
void print(String text) {
System.out.println("문자열: " + text);
}
// 매개변수 2개 (String, int)
void print(String text, int number) {
System.out.println(text + " " + number);
}
}
public class Main {
public static void main(String[] args) {
Example ex = new Example();
ex.print(); // Hello
ex.print(10); // 숫자: 10
ex.print("안녕"); // 문자열: 안녕
ex.print("Hi", 5); // Hi 5
}
}
솔직히 이 문법이 어디에 어떻게 쓰일지는 아직 잘 모르겠다 ( 그냥 단순하게 코드를 짜다가 " 음... 이건 같은건가 다른건가.... " 라는 고민 때문에 이 글을 썻기 때문에, 아직 사용해보지는 않았다... )
오늘은 광복절, 헛되이 보내지 말자...! Cheer up!
'Java' 카테고리의 다른 글
| 자바 - inner class (4) | 2025.08.18 |
|---|---|
| 자바 - 파일명과 public 일치해야함!! (1) | 2025.08.18 |
| 자바 - 메서드에서 " return null; " 의 의미 (2) | 2025.08.15 |
| 자바 - 메서드 안(지역 변수)에서는 접근 제어자(public/private/protected와 static을 붙일 수 없음. (3) | 2025.08.15 |
| 자바 - static키워드를 써야할까 Instance를 써야할까? (4) | 2025.08.14 |