Interfaces specify functionality. In a way, they provide multiple inheritance. Let's say I have a function that does something with a list. But not just a list, just any collection. Anything that I can loop over the contents. So I use the interface Iterable.
public int randomMethod(Iterable li) {
...
}
Now this works with Lists and HashSets and all different things which are implemented and work in completely different ways and belong in different class structures, but all provide this basic functionality. This is different from say, a big game loop that .update()s all entities that extend a common class, although an interface could be used.