I have found in JLS
this paragraph
If an interface has no direct superinterfaces, then the interface implicitly declares a public abstract member method m with signature s, return type r, and throws clause t corresponding to each public instance method m with signature s, return type r, and throws clause t declared in Object, unless a method with the same signature, same return type, and a compatible throws clause is explicitly declared by the interface.
Does that mean that interface makes some kind of inheritance from Object API?
UPD
Why can I call Object's method via interface type?
interface I {}
I i = ...
i.toString();
I see here some kind of binding. For me it looks like we bind Object
's method to I
type.