예제 // 인터페이스 참조한 예 Set set = new LinkedHashSet(); // 그렇지 않은 예 LinkedHashSet set = new LinkedHashSet(); LinkedHashSet 은 Set 인터페이스를 상속받고 있다. 위의 예제에서는 LinkedHashSet을 Set 타입으로 업캐스팅하여 사용하고 있다. ※ 주의: 업캐스팅으로 인해 set은 Set 타입이므로 LinkedHashSet 에만 존재하는 기능을 사용할 수 없게 됨 WHY?? 왜 인터페이스를 참조하라는 걸까? ( 더 나은 성능을 위해 ) 원래의 타입을 변경해야 하는 경우 예제 // 인터페이스를 참조한 예 // 구현체(LinkedHashSet -> HashSet)를 변경해도 코드는 변경되지 않음 Set set = new..