Object类的接口访问方法实例怎么样?

ano*_*984 5 java

interface Intf {
}

class A implements Intf {
}

class Test {    
    public static void main(String[] args) {
        Intf obj = new A();
        obj.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

一位朋友给我看了这个代码,我无法向他解释......

我们知道'refer'对象中定义的方法只能在实例上运行.我们可以看到没有定义方法,Intf但是obj(where refer Intf)能够调用toString()Object.class的方法

我安慰他说一切都是Java中的对象(尽管我们在eclipse IDE中没有得到自动填充选项Intf)

aio*_*obe 10

我们可以看到没有定义任何方法 Intf

实际上,有一个隐含声明的toString方法Intf.

每个接口(没有显式扩展另一个接口)都有一个隐式方法声明,用于每个公共方法Object.

这在Java语言规范,第9.2节接口成员中有详细解释.

9.2接口成员

[...]

  • 如果接口没有直接的超接口Object,则接口隐式声明一个公共抽象成员方法m,其中包含签名s,返回类型r和throws子句t,对应于具有签名s的每个公共实例方法m ,返回类型r和throws子句t声明在,除非接口显式声明具有相同签名,相同返回类型和兼容throws子句的方法.

[...]