我在JLS
这段落中找到了
如果接口没有直接的超级接口,那么接口 隐式声明带有签名的公共抽象成员方法m s,返回类型r,以及对应于每个公共的throws子句t 具有签名s的实例方法m,返回类型r和throws子句t 在Object中声明,除非具有相同签名的方法相同 返回类型,并且显式声明了兼容的throws子句 界面。
这是否意味着接口从Object API进行某种继承?
UPD
为什么我可以通过接口类型调用Object的方法?
interface I {}
I i = ...
i.toString();
我在这里看到某种绑定。对我来说,似乎我们将Object
的方法绑定到I
类型。
答案 0 :(得分:2)
它只表示对于任何接口类型的任何变量,您都可以执行所有Object
方法。这是有道理的,因为任何接口的任何实现都是Object
的子类(直接间接地),因此它具有所有Object
方法的实现。
这并不意味着界面继承"来自Object类,因为接口只能扩展其他接口。