같은 의미의 호출 형태를 여러 서명으로 제공합니다.
오버로딩은 이름은 같고 매개변수 목록이 다른 메서드를 정의합니다. varargs는 마지막 매개변수에 Type...을 사용해 개수가 가변적인 인수를 배열로 받습니다.
average(80, 95, 87)은 정수 세 개라 int... 버전이 선택되고, 세 값이 배열 values로 묶여 262 / 3인 87.33333333333333이 출력됩니다. average(2.5, 4.0)은 double 두 개짜리 오버로드로 가서 3.25가 됩니다. 정수를 두 개만 넘기면 컴파일러가 가변 인수보다 int를 double로 넓히는 쪽을 먼저 고르므로, average(80, 95)는 double 버전이 처리해 87.5를 돌려줍니다.
컴파일러는 인수 타입으로 가장 구체적인 오버로드를 선택합니다. null이나 자동 형 변환이 섞이면 호출이 모호해질 수 있습니다.
오버로드마다 의미가 달라지지 않게 하고 선택 옵션이 많아지면 빌더나 설정 객체를 고려합니다.
반환 타입만 다르게 해서는 오버로딩할 수 없습니다.
직접 바꿔보세요int와 double 평균 오버로드를 비교하세요.
실행 버튼을 누르면 결과가 여기에 표시됩니다.