2026년 02월 17일

🔧 Java 메서드(Method) — 객체의 동작을 정의한다

Java Spring Boot
Cover Image

🔧 Java 메서드(Method) — 객체의 동작을 정의한다

핵심 개념 : 메서드는 객체가 수행할 동작을 정의한 실행 블록이다. 객체 간 상호작용의 수단이 된다.


1️⃣ 메서드 선언 — 4가지 구성 요소

리턴타입 메서드명(매개변수) {    // ← 선언부
    // 실행 블록            // ← 구현부
    return 값;
}
구성 요소설명예시
리턴타입메서드 실행 후 반환할 값의 타입 (없으면 void)int, double, void
메서드명소문자로 시작, camelCase 스타일run(), setSpeed()
매개변수호출 시 전달받을 값 (없으면 생략)(int x, int y)
실행 블록메서드 호출 시 실행되는 코드{ ... }

예시 — Calculator 클래스

public class Calculator {
    void powerOn() {
        System.out.println("전원을 켭니다.");
    }
    
    int plus(int x, int y) {
        return x + y;  // int 타입 리턴
    }
    
    double divide(int x, int y) {
        return (double)x / (double)y;  // double 타입 리턴
    }
}

2️⃣ 메서드 호출 — 내부 vs 외부

메서드는 객체가 생성된 후에 호출할 수 있다.

외부 객체에서 호출

참조변수와 도트(.) 연산자를 사용한다.

Calculator calc = new Calculator();

calc.powerOn();                    // 리턴값 없음
int result1 = calc.plus(3, 5);     // 리턴값을 변수에 저장
double result2 = calc.divide(10, 4);

객체 내부에서 호출

메서드명만으로 직접 호출 가능하다.

class Calculator {
    void method() {
        powerOn();              // 다른 메서드 호출
        int r = plus(3, 5);     // 리턴값 받기
    }
}

3️⃣ 가변길이 매개변수 — 개수 제한 없이 받기

타입... 문법으로 매개값을 개수 제한 없이 받을 수 있다.

int sum(int... values) {
    int sum = 0;
    for (int i = 0; i < values.length; i++) {
        sum += values[i];
    }
    return sum;
}
// 호출 방법 3가지 (모두 가능)
sum(1, 2, 3);              // 개별 값
sum(1, 2, 3, 4, 5);        // 개수 제한 없음
sum(new int[]{1, 2, 3});   // 배열도 가능

💡 가변길이 매개변수는 내부적으로 배열로 처리된다.


4️⃣ return 문 — 메서드 종료와 값 반환

return 은 두 가지 역할을 한다.

① 메서드 실행을 즉시 종료
② 호출한 곳으로 값을 반환 (리턴타입이 있는 경우)

Unreachable Code 에러

return 이후의 코드는 절대 실행되지 않는다.

int plus(int x, int y) {
    int result = x + y;
    return result;
    System.out.println(result);  // ❌ Unreachable code 에러
}

조건부 return은 가능

boolean isLeftGas() {
    if (gas == 0) {
        System.out.println("gas가 없습니다.");
        return false;  // 여기서 종료
    }
    System.out.println("gas가 있습니다.");
    return true;       // 또는 여기서 종료
}

⚠️ if-else 분기에서는 각 경로마다 return이 있어야 컴파일 에러가 발생하지 않는다.


5️⃣ 메서드 오버로딩(Overloading)

같은 이름의 메서드를 매개변수만 다르게 해서 여러 개 선언하는 것이다.

오버로딩 조건

매개변수의 타입, 개수, 순서 중 하나라도 달라야 한다.

// ✅ 올바른 오버로딩
int plus(int x, int y) { ... }
double plus(double x, double y) { ... }

// ❌ 오버로딩 아님 (매개변수 이름만 다름)
int plus(int x, int y) { ... }
int plus(int a, int b) { ... }  // 컴파일 에러

실전 예시 — println()

System.out.println()이 대표적인 오버로딩 메서드다.

println()              // 매개변수 없음
println(int x)         // int 출력
println(double x)      // double 출력
println(String x)      // String 출력

활용 예시 — 정사각형 vs 직사각형

class Calculator {
    // 정사각형 넓이 (매개변수 1개)
    double areaRectangle(double width) {
        return width * width;
    }
    
    // 직사각형 넓이 (매개변수 2개)
    double areaRectangle(double width, double height) {
        return width * height;
    }
}

// 호출
calc.areaRectangle(10);      // 100.0 (정사각형)
calc.areaRectangle(10, 20);  // 200.0 (직사각형)

📌 핵심 요약

개념설명
메서드 선언리턴타입 + 메서드명 + 매개변수 + 실행블록
메서드 호출외부는 참조변수.메서드(), 내부는 메서드()
가변길이 매개변수타입... 변수명 → 배열로 처리됨
return메서드 종료 + 값 반환 (이후 코드는 실행 안 됨)
오버로딩같은 이름, 다른 매개변수로 여러 메서드 선언
← 목록으로 돌아가기