함수 오버로딩이란 무엇입니까?

함수 오버로딩은 동일한 이름으로 입력 매개 변수 나 리턴 유형이 다른 여러 메소드를 작성할 수있는 많은 프로그래밍 언어의 기능입니다. 이것은 객체 지향 프로그래밍에서 공통적 인 기능입니다. 특히 생성자는 여러 다른 오버로드 된 변형을 가질 수 있습니다. 기본적으로 함수 오버로딩은 두 함수가 매우 유사한 작업을 수행하고 여러 유형의 입력이 필요할 때 유용합니다. 생성자는 명시적인 반환 유형이 지정되지 않았기 때문에 쉽게 오버로드 될 수 있으므로 생성자의 입력 매개 변수를 변경하는 것만으로도 유효한 오버로드가됩니다.

함수가 오버로드 될 수있는 첫 번째 방법은 입력 매개 변수를 변경하는 것입니다. 예를 들어, 입력 두 정수를 취하는 "add"라는 함수를 고려할 수 있습니다. 이 기능의 목적은 매우 분명합니다. 두 정수의 합을 찾는 것입니다.

그러나 두 부동 소수점 또는 소수의 합계를 찾으려면이 기능을 적용 할 수 없습니다. 따라서 두 번째 오버로드 된 함수가 필요합니다. 입력으로 두 개의 부동 소수점을 가져 오는 "add"라는 함수로 정의됩니다. 함수는 본질적으로 동일한 기능을 수행하지만 입력이 크게 다르기 때문에 함수 오버로드가 필요합니다.

함수가 오버로드 될 수있는 두 번째 방법은 입력 매개 변수와 반환 유형을 모두 변경하는 것입니다. 앞의 예제를 사용하면 오버로드 된 "add"함수에 모두 void 반환 유형이 있는지 고려할 수 있습니다. 즉, 그들은 아무것도 반환하지 않았습니다. 이것은 여전히 ​​유효한 함수 오버로드이지만 두 메소드의 리턴 유형도 변경 될 수 있습니다. 또 다른 유효한 오버로드 인스턴스에서 두 개의 정수를 사용하는 "add"함수는 해당 정수 합계를 리턴 할 수 있고 두 개의 10 진수를 사용하는 "add"함수는 해당 10 진수 합계를 리턴 할 수 있습니다.

그러나 단순히 함수의 반환 유형을 변경하는 것은 유효한 함수 오버로딩으로 간주되지 않습니다. 함수의 리턴 유형 만 변경하면 모호성이 발생합니다. 메소드 유형에서 어떤 리턴 유형이 바람직한 지 명확하지 않기 때문입니다. 매개 변수는 모호하게 정의 될 수 있으므로 오버로드 된 함수를 올바르게 호출하는 것이 매우 중요합니다. 예를 들어, 하나의 입력 매개 변수로 정수를 갖는 오버로드 된 함수가 있고, 다른 하나는 매개 변수로 10 진수를 갖는 다른 함수는 실수로 정수 함수 대신에 십진수 함수를 호출하는 것이 매우 쉽습니다. 이름이 같기 때문에 또는 그 반대의 경우도 마찬가지입니다. 이러한 매개 변수와 같은 모호한 매개 변수는 가능하면 피해야하며, 가능하지 않은 경우 적절한 오버로드 된 함수가 적절한 시간에 호출되도록주의를 기울여야합니다.

함수 오버로딩은 다양한 입력 유형으로 관련 함수를 만드는 데 유용하며 코드에 많은 유연성을 제공합니다. 오버로드 된 기능에 대한 마지막 고려 사항은 적절한 주석이 필수적이라는 것입니다. 특정 상황에 맞는 오버로드 된 기능의 버전이 다른 입력 매개 변수를 통해 명확 해지더라도 다른 오버로드 된 파트너와 기능이 어떻게 다른지 항상 명확하지는 않습니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?