What does it mean to “program to an interface”?

Já vi isso mencionado algumas vezes e não sei ao certo o que isso significa. Quando e por que você faria isso?

Sei o que as interfaces fazem, mas o fato de não ser claro sobre isso me faz pensar que estou perdendo o uso delas.

Será que você deveria fazer:

IInterface classRef = new ObjectWhatever()

Você pode usar qualquer classe que implementeIInterface? Quando você precisaria fazer isso? A única coisa em que consigo pensar é se você tem um método e não tem certeza de qual objeto será passado, exceto pela implementaçãoIInterface. Não consigo imaginar quantas vezes você precisaria fazer isso.

Além disso, como você pode escrever um método que utiliza um objeto que implementa uma interface? Isso é possível?

questionAnswers(30)

yourAnswerToTheQuestion