Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add chapter4 discussions #476

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

jongfeel
Copy link
Member

공변성, 반공변성(책에서는 반변covariance으로 표현)에 대해 개념은 알고 있었지만 제가 정확히 몰랐던 부분이 있었습니다.

제가 즐겨서 생성하고 선언하는 List 제네릭 클래스는 다음과 같습니다.

IEnumerable<A> list = new List<B>(); // compile

저는 이 코드를 알기 때문에 공변성이다! 라고만 생각했고 여태까지 그렇게 알고 있었습니다.

첫번째,
책의 설명대로라면 읽기 전용 인터페이스이기 때문에 여태 A 타입의 서브타입인 B가 왜 가능한지 설명하지는 못했습니다.
하지만 변경할 수 있는 인터페이스(예: IList와 같은)는 가능하지 않으므로 공변성이 무엇인지 더 정확하게 알게 되었습니다.
이것 때문에 IDE에 코드 작성을 꽤 오래 해봤습니다.

두번째, 제가 알고 있는 코드는 제네릭 타입에 대한 것 뿐이고 매개변수 타입을 더 따져보지는 못했습니다.
책을 읽고 제네릭 타입과 제네릭 매개변수 타입에 대해 더 따져봐야 하고,
그래야 입력(in)에 대한 매개변수일 때 반공변성이 성립하고 이에 대해 더 정확히 이해할 수 있게 되었다는 걸 알았습니다.

이제 어디가서 공변성에 대해서만 설명하고 반공변성을 설명해 주지 못했는데
이제 확실히 알고 설명할 수 있게 된 좋은 계기가 아닌가 하는 생각이 듭니다.

Copy link

우측에 있는 Projects, Milestone, Development를 확인 후 할당 해주세요~! 🙇

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
2025 타입으로 견고하게 다형성으로 유연하게 탄탄한 개발을 위한 씨줄과 날줄
Projects
Status: In review
4 participants