接口有toString方法吗?

Akh*_*bey 13 java interface

如何toString使用interface的引用变量调用方法Test,而没有toString方法呢?

interface Test
{
    void show();
    String toHi();
}
class Demo implements Test
{
    public void show(){
        System.out.println("Show");
    }
    public String toString(){
        return "Hello"; 
    }
    public String toHi(){
        return "Hi";    
    }

    public static void main(String[] args) 
    {
        Test t=new Demo();
        String s=t.toString();
        System.out.println(s);
    }
}
Run Code Online (Sandbox Code Playgroud)

Kum*_*tra 12

在该Java文档说...

When an interface has no direct SuperInterface, it will create abstract public method for all those public methods present in the Object class.

这就是您能够toString()在接口引用上调用该方法的原因


Joh*_*eek 11

Object有一个toString()方法,所以一切(基本类型除外)都有一个toString()方法.Java会将任何东西,甚至是空接口都视为具有所有方法Object,因为它始终如此.


Cla*_*diu 5

任何方法Object都有toString().任何实现接口的东西都会隐式扩展Object,因此也会有一个toString()方法.