Каковы преимущества объявления объекта как интерфейса? [Дубликат]

Possible Duplicate:
What does it mean to “program to an interface”?

Я заметил, что некоторым людям нравится объявлять объект как один из реализуемых им интерфейсов.even though, within the scope of the variable, it is not necessary to look at it as the interfaceнапример, нет внешнего API, который ожидает интерфейс.

Например:

Map<String, Object> someMap = new HashMap<String, Object>();

Или вы можете просто сделать

HashMap<String, Object> someMap = new HashMap<String, Object>();

и избежать импортаjava.util.Map в целом.

Каковы преимущества объявления его через интерфейс (первый выше) по сравнению с самим классом (второй выше)?

Спасибо

Ответы на вопрос(5)

Ваш ответ на вопрос