메서드 시그니처는 자바에서 오버로딩된 메서드들을 구분하기 위해 사용되는 것이다.
메서드는 크게 메서드이름, 파라미터(매개변수), 파라미터(매개변수)의 타입으로 구분할 수 있다.
메서드 시그니처의 구성 요소이다.
- 메서드 이름
- 메서드 파라미터리스트
메서드 파라미터리스트는 파라미터들의 타입, 개수, 순서에 대한 정보이다.
static int add(int a, int b){
return a+b;
}
static int add(int a, int b, int c){
return a+b+c;
}
같은 이름의 add메서드이지만 메서드 시그니처가 다른 메서드이다.
그로 인해 오버로딩이 가능해진 것이다.
만약 오버로딩이 없었다면 메서드의 이름을 조금만 다르게 해 구현했을 것이다.
오버로딩은 반환 타입은 인정하지 않는다.
static double minus(double a, double b){
return a-b;
}
static int minus(double a, double b){
return (int)(a-b);
}
위 경우 메서드의 이름은 같고 파라미터의 개수 순서 타입 다 같다
하지만 반환 타입이 다르다 하나는 double 다른 것은 int이다.
얼핏 보면 시그니처가 달라 오버로딩 될 수 있게 생겼지만.
자바에서는 오버로딩 규칙상 반환타입이 달라도 오버로딩을 허용하지 않는다.
결론
메서드 시그니처는 메서드의 이름+ 매개변수(파라미터) 순서, 타입이다.
메서드 시그니처는 자바에서 메서드들을 구분할 수 있는 수단이고 자바 입장에서는 각각의 메서드를 고유하게 구분할 수 있어야 한다.
메서드를 오버로딩해서 메서드 이름이 같아도 메서드 시그니처가 달라 메서드들을 서로 다르게 간주한다.
'Java' 카테고리의 다른 글
[Java] Object 클래스 (0) | 2025.04.04 |
---|---|
[Java] 얕은 복사와 깊은 복사 (2) | 2024.12.27 |
[Java] Stack Trace (0) | 2024.11.18 |
[Java] Argument와 Parameter의 차이점 (4) | 2024.11.09 |
[Java] 배열을 쉽게 출력하기! (1) | 2024.09.16 |