Yes.
Displaceable b says what can be done to b. The compiler can (and does) check whether that method is available on that type (Displaceable) at compile time.
How this is done is not necessarily clear at compile time. It's up to the implementation, at run-time, to just do it (move).
At compile time, the promise (I can move!) is checked. At runtime, the code has to prove that it really can :)
Even if Displaceable were a class and not an interface, and implemented move itself, the actual move called run-time would still be the implementation (if that implementation, Circle, would have overridden the Displaceable implementation).
The only time there is a compile-time binding of a call (to e.g. move) to the actual  implementation is when a method is defined as being static. That's also why static methods can't be defined in interfaces, as they don't hold implementation.