ingyuseong/Jav-A-Bom

[Part 1][2주차]클래스/ 개체 모델링 1

Closed this issue · 2 comments

Contents

개체지향 프로그램 및 설계
클래스/ 개체 모델링 1

탐구 키워드

클래스

  • 생성자
  • 접근 제어자
  • 캡슐화 / 추상화
  • getter / setter

개체 모델링1

  • 개체 모델링1 (본인이 직접 개체 모델링 해보기)

공통 주제

  • 제네릭
  • JCF(Java Collection Framework)

질문은 Comment를 통해서

다들 새해 복 많이받으세요🔥🔥

질문 있습니당

  1. 반복자의 사용예제
    특히, 특정원소를 삭제하며 순회는 경우가 헷갈리네요. 삭제한 순간에 반복자가 prev 혹은 next를 하면, 삭제한 원소의 한칸 앞, 한칸 뒤 원소를 참조하는 걸로 이해 했는데 맞나요? 또, iterator를 생성했을때 반복자가 가리키는 위치가 정확히 어떻게 되는지 궁금합니다. 첫 번째 원소 앞(next를 했을때 첫 번째 원소를 가리키는 위치) 같은데 책에서는 첫 번째 인스턴스를 가리킨다네요ㅠ
  2. 다음 두 가지 메소드를 비교해주세요. 공통점 / 차이점
    • public static <T> void peekBox(Box<? extends T> box)
    • public static <T, W> void peekBox(Box<W extends T> box)

2 확실치 않지만 찾아보고 내가 이해한 선에서 말해보겠다.

  • 공통점: 메서드의 공통점이라 함은 메서드가 받아들일 매개변수의 타입 변수가 시사하는 점이 같다고 볼 수 있다. <? extends T> 와 는 타입 파라미터를 T나 T에게 상속받는 클래스만 받겠다는 뜻이다.
  • 차이점: 첫번째 메서드의 경우에는 와일드카드 ?를 씀으로써 T에게 상속받는 actual type에 대해 상관하지 않고, 그저 T를 상속받는다는 것에만 의의가 있다. 즉, T를 코드 어디에서도 사용할 필요가 없는 경우 유형 이름 T를 전혀 언급하지 않는다고 의도를 더 명확하게 한다는 것이다. 두 번째 메서드에서는 W extends T를 씀으로써 T에게 상속받는 W를 타입 파라미터로 받으며 코드 어딘가에서 쓸 계획이 있다고 의도를 밝히는 점이 차이가 있다.

와일드카드 타입과 바운디드 타입의 차이점은 아래와 같은 사이트에서 더 알아볼 수 있다.
http://www.angelikalanger.com/GenericsFAQ/FAQSections/TypeArguments.html#FAQ203
https://stackoverflow.com/questions/39240644/bounded-type-parameters