toString,hashcode和equals方法内部接口

问题描述:

下面的示例运行没有任何错误,任何人都可以解释我是如何工作的,因为接口不包含任何toString()/ hashcode/equals方法声明编译器如何解析方法调用根据我的理解,toString()/ hashcode/equals或Object类的方法将在接口中默认声明?请纠正我,如果错了toString,hashcode和equals方法内部接口

interface int1 { public void show(); }

class inttest implements int1 
{ 

    public void show() 
    { 
     System.out.println("inttest.show()"); 
    } 

    @Override 
    public String toString() 
    { 
     return "tostring called"; 
    } 
} 

public class MainClass1 
{ 
    public static void main(String[] args) { 
     int1 i=new inttest(); 
     System.out.println(i.toString()); 

    } 
} 

任何接口具有Object类的所有公共方法(它或者继承他们从超级接口或声明它们暗示,如果它不已经明确宣布他们)。

这是有道理的,因为任何实现类的任何接口必须是(直接或直接)子类Object类的,因此,将继承所有Object方法的实现。

9.2. Interface Members

如果接口没有直接超接口,则接口隐式声明与签名s,返回类型为r的公共抽象成员方法米,和throws子句吨对应于每个公共实例方法米与签名s,返回类型r,并抛出在Object中声明的子句t,除非具有相同签名,相同返回类型和兼容throws子句的抽象方法由接口显式声明。

+0

谢谢,这非常有帮助 –

由于所有对象都扩展了ObjectObject有一个toString()您正在调用该方法。