상속된 메서드의 반환 유형에 대한 공분산을 지원하는 언어는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/47009

문제

원래는 물어봤는데 이 질문, 그러나 답을 찾는 과정에서 내 원래 문제는 상속된 메서드의 반환 유형에 대한 공분산에 대한 C#의 지원이 부족하다는 것을 발견했습니다.그걸 발견하고 나서 어떤 언어인지 궁금해졌어요. 하다 이 기능을 지원합니다.

나는 가장 많은 이름을 지을 수 있는 사람의 답변을 받아들이겠습니다.

편집하다:John Millikin은 많은 동적 언어가 이를 지원한다는 점을 정확하게 지적했습니다.명확히 하기 위해:

나는 정적/강력한 유형의 언어만을 찾고 있습니다.

도움이 되었습니까?

해결책

  • C++
  • 자바
  • REAL기본
  • 에펠
  • 새터
  • 모듈라-3

다른 팁

물론 Python, Ruby, Smalltalk, Javascript 등 모든 동적 언어가 가능합니다.

기본적으로 제가 묻고 있는 것은 제가 여기서 하려는 일을 어떤 언어가 지원하는지입니다.

C#에서는 get() 그리고 set() 행동 양식?그렇지 않은 경우 실제 항목으로 분할하겠습니다. Leg get_leg() 그리고 set_leg(DogLeg) 기능.그렇지 않으면 다음 두 가지 중 하나가 발생합니다.1) 과잉 사양 get_leg() 2) 과소사양 set_leg().

Java는 1.5에서 이에 대한 지원을 추가했습니다.이전 버전에서는 컴파일되지 않습니다.

Ivan Hamilton과 Mat Noguchi가 지적했듯이 C++에서는 이 기능을 지원합니다.그러나 MSVC 7.X부터 9.X(아마도 6도)의 일부 기본을 상속하는 템플릿 클래스의 경우 공변 반환 유형이 손상됩니다.오류 C2555가 발생합니다.

C++는 공변 반환 유형을 지원합니다.

하지만 내 생각에는 그것이 내가 요구하는 것인 것 같아요.. 아니면 그럴까요?

솔직히 당신이 무엇을 요구하는지 모르겠습니다.Java는 분명히 C#과 동일한 반환 유형 공분산을 지원하므로 원하는 것이 C#에 부족하다면 Java에도 부족합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top