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

He visto esto mencionado varias veces y no tengo claro qué significa. ¿Cuándo y por qué harías esto?

Sé lo que hacen las interfaces, pero el hecho de que no tengo claro esto me hace pensar que me estoy perdiendo el uso correcto.

¿Es así si tuvieras que hacer:

IInterface classRef = new ObjectWhatever()

Puedes usar cualquier clase que implementeIInterface? ¿Cuándo necesitarías hacer eso? Lo único en lo que puedo pensar es si tiene un método y no está seguro de qué objeto se pasará, excepto si se implementaIInterface. No puedo pensar con qué frecuencia necesitarías hacer eso.

Además, ¿cómo podría escribir un método que incorpore un objeto que implemente una interfaz? ¿Es eso posible?

Respuestas a la pregunta(30)

Su respuesta a la pregunta