>Java >java지도 시간 >일반 영어의 공분산, 불변성 및 반공변성은 무엇입니까?

일반 영어의 공분산, 불변성 및 반공변성은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-11-11 01:51:031007검색

What are Covariance, Invariance, and Contravariance in Plain English?

일반 영어의 공분산, 불변성, 반공변성 이해

공분산, 불변성, 반공변성은 특정 환경에서 입력 관계가 어떻게 작동하는지 설명하는 용어입니다. 변형. 프로그래밍에서 이러한 변환은 유형 변환, 메소드 재정의 또는 상속일 수 있습니다.

공분산

공분산은 유형의 하위 유형이 유형의 하위 유형이 된다는 것을 의미합니다. 변형된 유형. 예를 들어, 클래스 A가 클래스 B의 하위 유형이고 T 유형을 취하고 변환된 유형 T''를 반환하는 함수 f(T)가 있는 경우 A가 B의 하위 유형이면 f(A)는 다음과 같습니다. f(B)의 하위 유형이기도 합니다.

반공변성

반공변성은 공분산의 반대입니다. 반공변성에서는 유형의 하위 유형이 변환된 유형의 상위 유형에 매핑됩니다. 위 공분산 예시의 동일한 함수 f(T)가 반공변적이라면 A가 B의 하위 유형이면 f(B)는 f(A)의 하위 유형이 됩니다.

불변

불변성은 변환에 공분산이나 반공분산이 모두 적용되지 않음을 의미합니다. 즉, 하위 유형 관계는 변환의 영향을 받지 않습니다.

다음 예를 고려하십시오.

Java Generics

Java의 제네릭은 불변입니다. 이는 예를 들어 List이 ​​List의 하위 유형도 상위 유형도 아니라는 것을 의미합니다.

배열

Java의 배열은 공변적입니다. 즉, String[]은 Object[]의 하위 유형입니다.

메서드 재정의

메서드 재정의에서 공변성은 반환 유형에 적용되고 반공변성은 매개변수 유형에 적용됩니다. 즉, 하위 클래스가 상위 클래스의 메서드를 재정의하는 경우 반환 유형은 공변(수퍼클래스 메서드 반환 유형의 하위 유형)이 될 수 있고 매개변수 유형은 반공변(수퍼클래스 메서드 매개변수 유형의 상위 유형)이 될 수 있습니다.

결론적으로 공변성, 불변성, 반공변성은 유형 변환, 메서드 재정의 또는 상속과 같은 다양한 변환에서 입력 관계가 어떻게 작동하는지 설명합니다. 이러한 개념을 이해하면 프로그래머가 보다 유연하고 확장 가능한 코드를 작성하는 데 도움이 될 수 있습니다.

위 내용은 일반 영어의 공분산, 불변성 및 반공변성은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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