본문 바로가기
  • 🕊️ A Piece of Peace
🖥️ PC/JAVA

8. 메소드

by Moom2n 2024. 6. 26.

응용 프로그램을 설계할 때, 코드를 기능 단위로 나누는 것은 매우 중요합니다. 이렇게 하면 설계가 용이하고, 코드를 이해하기 쉬우며, 단위로 디버깅할 수 있기 때문입니다. 특히 Java에서는 클래스 내에서 명명된 코드 블록을 단위로 응용 프로그램을 구성하는데, 이를 메소드라고 합니다. 메소드는 작업을 수행하거나 값을 계산하는 클래스의 구성원입니다. 이번 글에서는 Java 메소드의 선언, 생성, 호출, 반환, 그리고 관련 개념들에 대해 알아보겠습니다.

메소드 선언

메소드란?

객체는 상태와 행위(동작)로 구분됩니다. 객체가 동작하기 위해 선언된 것이 메소드입니다. 메소드는 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것으로, 함수, 서브루틴, 프로시저, 서브 프로그램과 비슷한 개념입니다.

메소드와 유사한 개념들

  1. 함수: 특정 작업을 수행하거나 값을 반환하는 코드 블록입니다.
  2. 서브루틴/서브 프로그램: 메소드와 함수를 포괄하는 더 일반적인 용어로, 재사용 가능한 코드 조각을 만드는 데 도움이 됩니다.
  3. 프로시저: 값을 반환하지 않는 메소드나 함수를 가리키는 용어로, Java에서 'void' 반환 타입을 가진 메소드와 유사합니다.

함수 vs 프로시저

  • 함수: 기능에 집중하며, 특정 작업을 수행하고 값을 반환합니다.
  • 프로시저: 절차에 집중하며, 일정한 순서에 따라 실행되는 블록입니다.

Java에서는 함수와 프로시저를 동일하게 사용합니다.

추상화

추상화는 불필요한 것을 제외하고 필요한 것만 명확히 제공하는 기법입니다. 예를 들어, 몬드리안의 작품처럼 복잡한 것들을 단순화하여 표현합니다.

메소드 생성

Java Virtual Machine(JVM) 내에는 static 공간이 따로 존재하며, 정적 바인딩 시 여기에 적재됩니다. 메소드에는 이름, 파라미터, 바디가 필요합니다.

예제 코드

public class Hello {
    void myMethod() {
        System.out.println("Hello, World!");
    }

    static int add(int i, int j) {
        return i + j;
    }

    public static void main(String[] args) {
        Hello hi = new Hello();
        hi.myMethod();

        int i = 5, j = 1;
        int sum = add(i, j);

        Sample.addInt(i, j);
    }
}

class Sample {
    static int addInt(int i, int j) {
        return i + j;
    }
}

 

메소드 호출

메소드는 다른 클래스에서 호출할 수 있으며, 중첩 호출도 가능합니다. 또한, 본인이 본인을 호출하는 재귀호출도 가능합니다.

return statement

return문을 만나면 메소드는 실행을 멈추고 즉시 호출자 코드로 돌아갑니다. 메소드가 void가 아닌 다른 타입으로 정의된 경우, 반환 메커니즘을 사용하여 호출자에게 값을 반환합니다.

지역변수

메소드 안에 할당된 변수를 지역변수라고 합니다. 클래스 변수는 클래스 안에, 메소드 밖에 선언된 변수입니다.

값 return

void 메소드는 반환을 하지 않지만 프로시저 역할을 합니다. return을 사용하는 경우에는 특정 조건에 따라 메소드를 종료시킬 수 있습니다.