12-4~5 지네릭스 용어, 지네릭 타입과 다형성

oyeon·2020년 12월 28일
0

Java 개념

목록 보기
39/70

지네릭스 용어

  • Box<'T'> : 지네릭 클래스, 'T의 Box' 또는 'T Box'라고 읽는다.
  • T : 타입 변수 또는 타입 매개변수. (T는 타입 문자)
  • Box : 원시 타입(raw type)

지네릭 타입과 다형성

  • 참조 변수와 생성자에 대입된 타입은 일치해야 한다.
ArrayList<Tv> list = new ArrayList<Tv>();	// OK. 타입 Tv 일치.
ArrayList<Product> list = new ArrayList<Tv>();	// Error!! 타입 불일치
  • 지네릭 클래스간의 다형성은 성립.(대입된 타입은 물론 일치해야 함)
List<Tv> list = new ArrayList<Tv>();	// OK. 다형성. ArrayList가 List를 구현
List<Tv> list = new LinkedList<Tv>();	// OK. 다형성. LinkedList가 List를 구현
  • 매개변수의 다형성도 성립
ArrayList<Product> list = new ArrayList<Product>(); // boolean add(E e) {...} -> boolean add(Product e) {...}
ArrayList<Tv> tvList = new ArrayList<Tv>();

list.add(new Product());	// public boolean add(Product e) 매개변수 자손도 OK
list.add(new Tv());		// OK. Product의 자손도 OK
list.add(new Audio());		// OK. Product의 자손도 OK
tvList.add(new Audio());	// 에러!! Tv 또는 그 자손 객체만 OK.

Product p = list.get(0); // OK. get의 반환 타입이 E에서 Product로 변해서 형변환 필요 없음
Tv p = (Tv)list.get(1);  // OK. (Tv) 형변환 반드시 필요
profile
Enjoy to study

0개의 댓글