다른 반환 유형을 사용한 오버로딩
프로그래밍에서 오버로딩은 동일한 이름을 가진 함수가 클래스나 네임스페이스 내에 존재하지만 매개변수가 다른 함수를 허용합니다. . 그러나 Java에서는 반환 유형만을 기준으로 함수를 오버로드하는 것이 불가능합니다.
왜 안 될까요?
Java 컴파일러는 함수 서명과 함수를 고유하게 식별하는 반환 유형입니다. 컴파일러가 반환 유형에 의해서만 오버로드를 허용한다면 모호성이 생길 것입니다. 다음 예를 고려하십시오.
<code class="java">public int foo() {...} public float foo() {..} ... foo(); // which one to call?</code>
이 경우 컴파일러는 반환 유형만으로는 실행할 foo 메소드를 결정할 수 없습니다. 이러한 모호성은 컴파일 오류로 이어질 수 있습니다.
Java의 미래
현재 향후 Java 버전에서 이 동작을 변경할 계획은 없습니다. Java 언어 사양에는 "두 메서드의 반환 유형이 다르더라도 동일한 서명을 가질 수 없습니다."라고 명시되어 있습니다.
C 고려 사항
반환 유형별 오버로딩은 C에서도 불가능합니다. Java와 유사하게 C 컴파일러는 반환 유형을 포함한 모든 매개변수를 사용하여 동일한 이름을 가진 함수를 구별합니다. 이 접근 방식은 특정 함수 호출이 항상 의도한 구현을 참조하도록 보장합니다.
위 내용은 Java에서 반환 유형에만 기반한 메서드를 오버로드할 수 없는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!