Cage이 Cage의 상위 타입이 아니다. 만약 Cage이 Cage이 상위 타입이라고 한다면 첫 번째 빨간색 네모친 할당 부분이 가능하다.
그럼 두 번째 빨간색 네모친 부분에서 Dog은 Animal의 하위 클래스이기에 Push가 가능하다. 다만 세 번째에서 getAll을 하게 되면 List이 리턴 값이나 두 번째에서 dog을 넣었기에 dog 리스트를 리턴한다.
이런 경우에 의해서 Cage은 Cage의 상위 타입이 아니다. 무변성 A가 B의 상위 타입일 때 GenericType가 GenericType의 상위 타입이 아니면 변성이 없다.
무변성 animal은 Cat의 상위 타입이지만 Cage은 Cage의 상위 타입이 아니다. 무변성일 때 문제 위와 같이 Dog을 상속받는 Small, CuteDog 구현 그리고 Dog cage에 사랑을 주는 Human class도 구현 그리고 ...
#
공변
#
자바
#
자바공변
#
자바제네릭
#
제네릭
원문 링크 : [JAVA] 제네릭 공변