IMG-LOGO
공지사항 :

자바 메소드(Method)

lmkfox - 2025-07-07 06:36:26 12 Views 0 Comment

1. 메소드의 기본 구조

[접근제어자] [반환타입] 메소드이름([매개변수]) {
    // 수행할 코드
    return 반환값; // 반환 타입이 void가 아닐 경우
}

예시

public int add(int a, int b) {
    return a + b;
}

  • public: 접근 제어자 (어디서든 접근 가능)

  • int: 반환 타입 (결과로 정수값을 반환)

  • add: 메소드 이름

  • (int a, int b): 매개변수 (입력값)


2. 메소드 호출

메소드는 호출해야 실행됩니다.

int result = add(3, 5);  // result = 8


3. 반환값이 없는 메소드

반환값이 필요 없을 경우 void를 사용합니다.

public void printHello() {
    System.out.println("Hello");
}


4. 매개변수(Parameter)

메소드가 입력값을 받아 작업할 수 있도록 **매개변수(parameter)**를 정의합니다.

public void greet(String name) {
    System.out.println("Hello, " + name);
}


5. 메소드 오버로딩 (Overloading)

같은 이름의 메소드를 매개변수 타입이나 개수를 달리하여 여러 개 정의할 수 있습니다.

public int multiply(int a, int b) {
    return a * b;
}

public double multiply(double a, double b) {
    return a * b;
}

반환 타입은 오버로딩 기준이 되지 않습니다.


6. static 메소드

static 키워드를 사용하면 객체를 생성하지 않고 클래스 이름으로 직접 호출할 수 있습니다.

public class MathUtils {
    public static int square(int x) {
        return x * x;
    }
}

int result = MathUtils.square(4);  // 결과: 16


7. 메소드 예제 전체 코드

public class Calculator {

    public int add(int a, int b) {
        return a + b;
    }

    public void showResult(int result) {
        System.out.println("결과: " + result);
    }

    public static void main(String[] args) {
        Calculator calc = new Calculator();
        int sum = calc.add(3, 4);
        calc.showResult(sum);
    }
}


8. 메소드의 장점

  • 코드 재사용성 증가: 중복 코드를 줄일 수 있음

  • 코드 가독성 향상: 각 기능을 분리해 읽기 쉽고 유지보수 용이

  • 모듈화: 프로그램을 논리적으로 구분


9. 접근 제어자 정리

제어자

접근 가능 범위

public

모든 클래스에서 접근 가능

private

선언된 클래스 내부에서만 가능

protected

같은 패키지 또는 상속 클래스

(default)

같은 패키지 내에서만 접근 가능


10. 메소드와 객체

인스턴스 메소드 (non-static)는 객체가 생성된 후 사용합니다.

MyClass obj = new MyClass();
obj.myMethod();


11. 재귀 메소드 (Recursive Method)

자기 자신을 호출하는 메소드입니다.

public int factorial(int n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}


요약

구성 요소

설명

선언 방식

반환타입, 이름, 매개변수 포함

반환 타입

메소드가 돌려주는 값의 타입

매개변수

메소드에 전달되는 입력값

static 여부

클래스 소속인지 인스턴스 소속인지

오버로딩

같은 이름, 다른 매개변수 가능


댓글