카테고리 없음

메서드 시그니처란?

오개발 2024. 10. 16. 21:39

메서드 시그니처(Method signature)란 무엇일까?

메서드 시그니처(Method Signature)**는 프로그래밍에서 메서드를 식별하는 데 사용되는 메서드의 구성 요소를 의미합니다. 자바를 비롯한 여러 언어에서 메서드를 구분하는 핵심 요소는 메서드 이름매개변수 목록입니다.

 

 

자바에서 메서드 시그니처의 구성 요소

  1. 메서드 이름: 메서드가 호출될 때 사용되는 이름.
  2. 매개변수 목록: 메서드가 받는 입력 값들. 각 매개변수의 타입순서가 중요하며, 이름은 중요하지 않습니다.

 

시그니처에 포함되지 않는 요소

  • 반환 타입: 메서드 시그니처에는 포함되지 않습니다. 즉, 동일한 이름과 매개변수를 가지지만 반환 타입이 다른 메서드를 작성할 수 없습니다.
  • 접근 제어자(public, private, protected), 예외 던지기(throws), static, final 키워드 등도 메서드 시그니처에는 포함되지 않습니다.

예시 1

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

 

이 메서드의 시그니처는 add(int, int)입니다.

  • 메서드 이름: add
  • 매개변수 목록: (int, int)

 

 

예시2 

 

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

public double add(double a, double b) {  // 허용됨: 시그니처가 다름
    return a + b;
}

public int add(int a, int b, int c) {  // 허용됨: 시그니처가 다름
    return a + b + c;
}

 

 

위 코드에서는 3개의 add 메서드가 있는데, 각 메서드의 시그니처는 서로 다릅니다.

  • add(int, int)
  • add(double, double)
  • add(int, int, int)

 

혹시 몰라서 매개변수와 메소드명이 같고 매개변수명만 다르게 해봤습니다.

 

public class Calculator {

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

    public int add(int x, int y) {  // 오류 발생: 시그니처가 동일함
        return x + y;
    }
}

 

오류가 발생합니다.

 


 

결론적으로 메서드 이름매개변수 타입으로 오버로딩이 된다.

 

이두개는 매우 시그니처해야된다.