제네릭 클래스는 참조변수하고 생성자에 대입된 타입이 일치해야한다.
ArrayList<Product> list = new ArrayList<Tv>(); // 에러. 대입된 타입 불일치
하지만 와일드 카드를 사용하면 타입이 일치하지 않아도 된다.
ArrayList<? extends Product> list = new ArrayList<Tv>(); //Tv는 Product의 자식클래스