Interfaces are also good for decoupling data and functions. It can pave the way for making objects that are more like data where one can specify actions independent of a hierarchy. However, to really understand what I am saying(typing), you might need to get some functional language exposure(not necessary, but it speeds up the process).
The same can be said for design by composition.