Of late, I have been reading posts which talks about the supposed wrong notion that interfaces are abstractions. One such post is http://blog.ploeh.dk/2010/12/02/InterfacesA
Programming to an interface instead of an implementation is more about using data abstraction and encapsulation.
When we say "interface" in terms of programming to an interface. That kind of interface means the external facing methods and properties of a class. It doesn't have to be a language level interface. (The keyword interface.)
You should be striving to make sure that your code is not dependent on the internal details of other classes.