자바

자바 메서드 가이드

끄적인다 2024. 6. 24. 19:00
반응형

자바(Java)에서 메서드는 특정 작업을 수행하는 코드 블록입니다. 메서드를 사용하면 코드의 재사용성을 높이고, 프로그램을 더 구조적으로 작성할 수 있습니다. 이 글에서는 자바 메서드의 선언, 호출, 매개변수, 반환 값, 오버로딩 등 다양한 측면을 자세히 살펴보겠습니다.

메서드란 무엇인가?

메서드는 객체의 동작을 정의하는 코드 블록입니다. 메서드는 특정 작업을 수행하며, 이 작업을 호출하는 코드에 의해 실행됩니다. 메서드는 코드의 재사용성을 높이고, 프로그램을 모듈화하여 관리하기 쉽게 합니다.

1. 메서드 선언과 호출

메서드 선언

메서드를 선언할 때는 반환 타입, 메서드 이름, 매개변수 목록, 메서드 몸체를 지정합니다.

// 반환 타입: int, 메서드 이름: add, 매개변수: int a, int b
public int add(int a, int b) {
    return a + b;
}

메서드 호출

메서드를 호출할 때는 메서드 이름과 함께 필요한 인자를 전달합니다.

public class Main {
    public static void main(String[] args) {
        Main obj = new Main();
        int result = obj.add(5, 3);
        System.out.println("결과: " + result); // 출력: 결과: 8
    }
    
    public int add(int a, int b) {
        return a + b;
    }
}

2. 매개변수와 반환 값

매개변수

메서드는 호출 시 전달되는 인자를 매개변수로 받을 수 있습니다. 매개변수는 여러 개 사용할 수 있으며, 각 매개변수는 타입과 이름을 지정해야 합니다.

public void printSum(int a, int b) {
    int sum = a + b;
    System.out.println("합: " + sum);
}

반환 값

메서드는 작업을 수행한 후 결과를 반환할 수 있습니다. 반환 타입을 지정하고, return 키워드를 사용하여 값을 반환합니다. 반환 타입이 void인 경우 값을 반환하지 않습니다.

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

public void greet() {
    System.out.println("안녕하세요!");
}

3. 메서드 오버로딩

메서드 오버로딩(Method Overloading)은 같은 이름의 메서드를 여러 개 정의하는 기능입니다. 각 메서드는 매개변수의 수나 타입이 달라야 합니다.

public class Main {
    public static void main(String[] args) {
        Main obj = new Main();
        System.out.println(obj.add(5, 3)); // 출력: 8
        System.out.println(obj.add(5.5, 3.2)); // 출력: 8.7
    }
    
    public int add(int a, int b) {
        return a + b;
    }
    
    public double add(double a, double b) {
        return a + b;
    }
}

4. 재귀 메서드

재귀 메서드(Recursive Method)는 메서드 내부에서 자기 자신을 호출하는 메서드입니다. 재귀 메서드를 사용할 때는 반드시 종료 조건을 지정해야 합니다.

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

// 사용 예시
Main obj = new Main();
System.out.println(obj.factorial(5)); // 출력: 120

5. 메서드의 접근 제어자

메서드는 클래스의 멤버로서 접근 제어자를 가질 수 있습니다. 접근 제어자는 메서드의 접근 범위를 지정합니다.

접근 제어자의 종류

  • public: 모든 클래스에서 접근 가능
  • protected: 같은 패키지 내의 클래스와 상속받은 클래스에서 접근 가능
  • default(아무 것도 쓰지 않은 경우): 같은 패키지 내의 클래스에서만 접근 가능
  • private: 같은 클래스 내에서만 접근 가능
public class Example {
    public void publicMethod() {
        System.out.println("Public method");
    }
    
    protected void protectedMethod() {
        System.out.println("Protected method");
    }
    
    void defaultMethod() {
        System.out.println("Default method");
    }
    
    private void privateMethod() {
        System.out.println("Private method");
    }
}

6. static 메서드

static 키워드를 사용하여 선언된 메서드는 클래스 레벨의 메서드로, 객체를 생성하지 않고도 호출할 수 있습니다. static 메서드는 주로 유틸리티 메서드나 메인 메서드에 사용됩니다.

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

// 사용 예시
int result = Utility.add(5, 3);
System.out.println("결과: " + result); // 출력: 결과: 8

7. 메서드 예외 처리

메서드는 예외를 발생시킬 수 있으며, 예외를 처리하거나 호출자에게 예외를 전달할 수 있습니다. 예외를 메서드 시그니처에 명시하여 호출자에게 알릴 수 있습니다.

예외를 던지는 메서드

public void checkAge(int age) throws IllegalArgumentException {
    if (age < 18) {
        throw new IllegalArgumentException("나이는 18세 이상이어야 합니다.");
    }
}

// 사용 예시
try {
    checkAge(15);
} catch (IllegalArgumentException e) {
    System.out.println(e.getMessage()); // 출력: 나이는 18세 이상이어야 합니다.
}

결론

이 글에서는 자바의 메서드에 대해 자세히 살펴보았습니다. 메서드는 코드의 재사용성을 높이고 프로그램을 더 구조적으로 작성할 수 있게 해줍니다. 다양한 메서드 선언, 호출 방법, 매개변수와 반환 값, 오버로딩, 재귀, 접근 제어자, static 메서드, 예외 처리 등 메서드의 다양한 측면을 이해하면 자바 프로그래밍을 더욱 효율적으로 할 수 있습니다. 추가적인 질문이 있으면 언제든지 댓글로 남겨주세요!

반응형