There are a lot of big, fancy words to describe this, but none are coming immediate to mind and I don't want to google.
Basically, an object is not being created from an interface. The compiler simply assumes the runtime object type the method is being called upon (perhaps a Runnable type) has been initialized with some class which inherits from that type. That is a fair assumption, since the compiler will not explicitly let you initialize an interface or abstract class. So, at runtime, the object type can only be in one of the two states: legally initialized by some class which inherits from said type, or the object is null. If the object is null, a NullPointerException will be thrown at runtime, so that state is taken care of.