![](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyyPWr%2FbtrSnVtxER8%2FcyJFvLjs4Y3xdlA2oQCs71%2Fimg.png)
이 포스팅에서 작성하는 내용은 EFFECTIVE JAVA(이펙티브자바) 에서 발췌하였습니다. 아이템 64. 객체는 인터페이스를 사용해 참조하라 아이템 51에서 매개변수 타입으로 클래스가 아니라 인터페이스를 사용하라고 했는데, 이 조언을 “객체는 클래스가 아닌 인터페이스로 참조하라”로 확장할 수 있다. 적합한 인터페이스만 있다면 매개변수뿐 아니라 반환값, 변수, 필드를 전부 인터페이스 타입으로 선언하라. 객체의 실제 클래스를 사용해야 할 상황은 오직 생성자로 생성할 때 뿐이다. ex 1) Set 인터페이스를 구현한 LinkedHashSet 변수를 선언하는 나쁜 예 LinkedHashSet sonSet = new LinkedHashSet(); ex 2) Set 인터페이스를 구현한 LinkedHashSet 변..