궁금증

메소드??? 함수?? 뭐가 다른거야?

0and24 2024. 11. 22. 00:20

출처: https://blog.kotlin-academy.com/kotlin-programmer-dictionary-function-vs-method-vs-procedure-c0216642ee87

메소드와 함수는 프로그래밍에서 중요한 개념으로, 비슷하지만 사용하는 방식과 맥락에서 차이가 있습니다. 이 차이를 명확히 이해하면 코드 설계와 개발에 큰 도움이 됩니다.

1. 함수(Function)란?

함수는 특정 작업을 수행하는 코드 블록으로, 독립적으로 호출될 수 있습니다.

  • 정의: 일반적으로 클래스나 객체에 속하지 않고, 독립적으로 정의된 코드 블록.
  • 언제 사용: 입력(인자)을 받아 처리하고, 결과(출력)를 반환하는 로직을 작성할 때 사용.

특징

  • 클래스나 객체에 종속되지 않음.
  • 독립적으로 동작하며, 데이터나 상태를 보관하지 않음.
  • 함수 호출 시, 이름과 전달할 매개변수만 있으면 호출 가능.

예제 (Java):

// 독립적으로 정의된 함수
public static int add(int a, int b) {
    return a + b;
}

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

2. 메소드(Method)란?

메소드는 특정 객체나 클래스에 속한 함수입니다.

  • 정의: 클래스 안에서 정의되고, 클래스나 객체에 연결되어 동작하는 함수.
  • 언제 사용: 객체의 상태(필드)에 접근하거나, 객체가 수행할 작업(행동)을 정의할 때 사용.

특징

  • 클래스나 객체 내부에서만 호출 가능.
  • 일반적으로 객체의 데이터를 읽거나 수정하는 데 사용.
  • this(Java, Kotlin) 또는 self(Python)를 통해 객체에 접근.

예제 (Java):

class Calculator {
    private int total;

    // 메소드
    public void add(int value) {
        this.total += value; // 객체 상태(total)를 수정
    }

    public int getTotal() {
        return this.total; // 객체 상태(total)를 반환
    }
}

// 호출
Calculator calc = new Calculator();
calc.add(5);               // 객체의 메소드 호출
int result = calc.getTotal(); // 객체의 메소드 호출, result = 5

3. 주요 차이

구분 함수(Function) 메소드(Method)
정의 위치 클래스 외부에서 독립적으로 정의 클래스 내부에서 정의
호출 방식 이름만으로 호출 가능 객체나 클래스를 통해 호출
데이터 접근 독립적으로 동작하며, 객체 상태에 접근하지 않음 객체나 클래스의 데이터(필드)에 접근 가능
종속성 객체와 무관하게 동작 객체나 클래스에 종속되어 동작
예시 add(3, 5) calc.add(5)

4. 요약

  • 함수(Function):
    • 독립적인 코드 블록으로, 클래스나 객체에 종속되지 않음.
    • 작업을 수행하고 결과를 반환하는 역할.
  • 메소드(Method):
    • 클래스나 객체에 속한 함수로, 객체의 상태를 읽거나 수정하거나, 행동을 정의.
    • 객체 지향 프로그래밍에서 주로 사용.

한 줄 요약: 모든 메소드는 함수이지만, 모든 함수가 메소드는 아닙니다. 😊