>  기사  >  Java  >  Java에서 반환 유형에만 기반한 메서드를 오버로드할 수 없는 이유는 무엇입니까?

Java에서 반환 유형에만 기반한 메서드를 오버로드할 수 없는 이유는 무엇입니까?

DDD
DDD원래의
2024-11-01 17:10:31249검색

Why Can't You Overload Methods Based Solely on Return Types in Java?

다른 반환 유형을 사용한 오버로딩

프로그래밍에서 오버로딩은 동일한 이름을 가진 함수가 클래스나 네임스페이스 내에 존재하지만 매개변수가 다른 함수를 허용합니다. . 그러나 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.