📚 자바 메서드 완전 정복! 🧠✨
함수? 메서드? 오버로딩? static은 또 뭐야? 초보자도 이해할 수 있게 예제로 풀어보겠습니다.
🧩 1. 메서드란?
- 클래스 내부에서 특정 작업을 수행하도록 정의된 코드 블록
- 구조: 반환타입 메서드명(매개변수) { 실행 코드 }
- 객체의 동작을 정의함 → Python의 함수와는 다르게 자바는 함수 없이 전부 메서드
int add(int a, int b) {
return a + b;
}
✅ 메서드명은 동사형 (eat, run), 변수명은 명사형 (person, score)
🔁 2. 매개변수 vs 인자
| 구분 | 설명 |
| 매개변수(parameter) | 메서드 선언부에서 입력값을 받는 변수 |
| 인자(argument) | 메서드 호출 시 전달하는 실제 값 |
int add(int a, int b) // ← 매개변수
add(10, 20); // ← 인자
📌 자바는 "값에 의한 호출"을 사용함! (값이 복사되어 전달됨)
🔄 3. 메서드 오버로딩 (Overloading)
- 같은 이름의 메서드를 매개변수의 타입/개수만 다르게 하여 여러 개 정의하는 것
- 반환 타입은 영향을 주지 않음
int add(int a, int b)
double add(double a, double b)
int add(int a, int b, int c)
🎯 목적: 다양한 형태의 입력을 한 메서드 이름으로 받아 처리
👍 장점: 가독성 향상, 코드 재사용성 증가
⚠️ 단점: 과도한 오버로딩은 오히려 복잡성 증가
⚙️ 4. 인스턴스 메서드와 정적(static) 메서드
| 구분 | 특징 | 사용 방법 |
| 인스턴스 메서드 | 객체 상태에 의존 | 객체명.메서드() |
| 정적 메서드 | 공통 기능, 객체 없이 사용 가능 | 클래스명.메서드() |
class Operator {
int add() { return a + b; } // 인스턴스 메서드
static int subtract(int a, int b) { ... } // 정적 메서드
}
✅ static은 객체와 무관한 "공통 동작" 정의 시 사용
🍔 5. 실전 예제: 주문받기 시스템
void placeOrder(String dish)
void placeOrder(String dish, int quantity)
void placeOrder(String dish, String specialRequests)
void placeOrder(String dish, int quantity, String specialRequests)
- 같은 placeOrder 이름으로 다양한 방식의 주문 처리 가능
- 자바 컴파일러가 인자의 타입/순서를 보고 자동으로 매칭해줌
placeOrder("hamburger");
placeOrder("pizza", 2);
placeOrder("pasta", "많이 주세요");
placeOrder("salad", 3, "땅콩 빼고 주세요");
📝 마무리 요약
| 개념 | 핵심 요약 |
| 메서드 | 클래스 내부에 정의된 동작 코드 |
| 매개변수 | 메서드 정의 시 입력 받는 변수 |
| 인자 | 메서드 호출 시 전달하는 실제 값 |
| 오버로딩 | 같은 이름, 다른 매개변수 구조의 메서드 다중 정의 |
| static | 객체 생성 없이 사용하는 정적 메서드 |
'Back-End > Java' 카테고리의 다른 글
| 접근제어자부터 다형성까지, 자바 객체지향 필수 문법 모음 (2) | 2025.08.06 |
|---|---|
| Java 상속과 생성자 흐름 완전 정복 (3) | 2025.08.04 |
| 객체 지향 프로그래밍(OOP) 란? (3) | 2025.07.28 |
| 자바 배열의 모든 것: 코드로 배우는 핵심 개념 (2) | 2025.07.23 |
| if-중독자 탈출법.zip | 자바 제어문 제대로 써보자 (4) | 2025.07.20 |