Item 52. 객체를 참조할 때는 그 인터페이스를 사용하라
- 적당한 인터페이스자료형이 있다면 인자나 반환값, 변수, 그리고필드의 자료형은 클래스 대신 인터페이스로 선언하자.
- 인터페이스를 자료형으로 쓰는 습관을 드리면 프로그램은 더욱 유연해진다.
```java
// 좋은 예제
List
subscribers = new Vector ();
// 나쁜 예제
Vector
하지만, 적당한 인터페이스가 없는 경우에는 객체를 클래스로 참조하는 것이 당연하다. 예를 들면,
- value class :
String
,BigInteger
- final class
- 유틸성 클래스 :
Random
인터페이스를 구현했지만 인터페이스에는 없는 함수를 추가로 제공해야 하는 경우, 그 인터페이스를 구현한 적절한 기반 클래스(abstract로 선언된 기반 클래스) 를 사용하는 것도 한 방법이다.
결론
- 인터페이스를 참조하면 유연해 진다.
- 적절한 인터페이스가 없다면 가장 일반적인 클래스(super class)를 사용하도록 하라.