Java 프로그래밍에서 메소드 서명은 메소드의 고유 식별자를 나타냅니다. 이는 메소드 이름과 해당 매개변수 목록으로 구성됩니다. 서명은 한 메소드를 다른 메소드와 구별하는 데 도움이 되며 Java 컴파일러가 메소드 호출을 해당 정의와 일치시킬 수 있도록 합니다. 메서드 서명에는 다음 구성 요소가 포함됩니다.
메소드 이름: | 메소드에 지정된 이름으로, 유효한 Java 식별자여야 하며 명명 규칙을 따릅니다. 메소드 이름은 설명적이어야 하며 수행하는 기능을 반영해야 합니다.
매개변수 목록: | 메소드가 호출될 때 수신할 것으로 예상되는 매개변수 또는 인수를 지정합니다. 목록의 각 매개변수는 매개변수 유형과 이름으로 구성됩니다. 여러 매개변수는 쉼표로 구분됩니다. 메서드에 매개변수가 필요하지 않으면 빈 매개변수 목록이 사용됩니다. 예를 들어:
public void methodName() {}
메소드에 매개변수가 있는 경우 서명에는 매개변수 유형과 이름이 포함됩니다.
공개 무효 메소드 이름(int param1, String param2) {}
예각
반환 유형: | 메소드가 반환하는 값의 데이터 유형을 정의합니다. 메서드가 값을 반환하지 않으면 반환 유형은 void로 지정됩니다. 값을 반환하는 경우 반환 유형은 반환된 값의 데이터 유형과 일치해야 합니다. 예를 들어:
public int methodName() {}
메서드가 배열이나 개체를 반환하는 경우 반환 유형은 반환된 개체의 배열 유형이나 클래스를 나타냅니다. 메소드 이름과 매개변수 목록의 조합은 클래스 내의 메소드를 고유하게 식별합니다. Java는 메소드 오버로딩을 지원합니다. 즉, 이름은 같지만 매개변수 목록이 다른 여러 메소드를 정의할 수 있습니다. 오버로드된 메서드에는 서로 다른 시그니처가 있으므로 컴파일러는 제공된 인수를 기반으로 실행할 적절한 메서드를 결정할 수 있습니다. 메서드 시그니처에는 메서드의 액세스 한정자(예: public, private 또는 protected)나 기타 한정자(예: static 또는 final)가 포함되지 않는다는 점에 유의하는 것이 중요합니다. 이러한 수정자는 메서드의 가시성과 동작을 지정하지만 시그니처의 일부로 간주되지는 않습니다.
액세스 수정자: | 메서드 시그니처의 일부로 간주되지는 않지만 public, private 또는 protected와 같은 액세스 한정자가 메서드의 가시성을 결정합니다. 메소드에 액세스할 수 있는 위치를 지정합니다. 예를 들어, 공용 메서드는 모든 클래스에서 액세스할 수 있지만 개인 메서드는 동일한 클래스 내에서만 액세스할 수 있습니다.
수정자: | 액세스 수정자 외에도 메소드에는 메소드의 다양한 동작과 제약 조건을 정의하는 static, final, abstract 또는synchronous와 같은 다른 수정자가 있을 수 있습니다. 이러한 수정자는 메서드 서명에도 영향을 주지 않습니다.
예외: | 메소드가 하나 이상의 예외를 발생시키는 경우 이는 메소드 시그니처의 일부입니다. 예외는 throws 키워드와 그 뒤에 예외 유형 목록을 사용하여 메서드 시그니처에서 선언됩니다. 이는 메서드가 실행 중에 잠재적으로 이러한 예외를 발생시킬 수 있음을 나타냅니다. 예를 들어:
public void methodName() throws IOException, IllegalArgumentException {}
메소드 오버로딩: | Java는 이름은 같지만 매개변수 목록이 다른 여러 메서드를 정의할 수 있는 메서드 오버로드를 지원합니다. 오버로드된 메서드에는 해당 매개 변수의 수, 유형 및 순서에 따라 고유한 서명이 있습니다. 반환 유형만으로는 오버로드된 메서드를 구별하는 데 충분하지 않습니다. 예를 들어:
public void methodName(int param1) {} public void methodName(int param1, int param2) {} public void methodName(String param1) {}
반환 유형: | 메서드 오버로드를 고려할 때 반환 형식은 메서드 시그니처의 일부가 아닙니다. 그러나 두 메서드의 이름과 매개변수 목록이 동일하지만 반환 형식이 다른 경우 컴파일 오류가 발생합니다. Java는 반환 유형에만 기반한 메소드 오버로드를 허용하지 않습니다.
바라그: | Java는 메소드 매개변수에서 varargs라고도 하는 가변 길이 인수를 지원합니다. varargs 매개변수를 사용하면 동일한 유형의 다양한 인수를 메소드에 전달할 수 있습니다. varargs 매개변수는 매개변수 유형 뒤에 줄임표(...)로 표시됩니다. 예를 들어:
public void methodName(int... numbers) {}
varargs를 사용하면 0을 포함하여 원하는 수의 int 인수를 사용하여 메서드를 호출할 수 있습니다.
메서드 호출 작업, 인터페이스 구현, 클래스 확장 또는 리플렉션 사용 시 메서드 시그니처를 이해하는 것이 필수적입니다. 이는 올바른 메소드가 호출되도록 보장하고 Java 프로그램에서 메소드를 식별하는 일관되고 명확한 방법을 제공합니다.