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
方法的实现。
如果接口没有直接超接口,则接口隐式声明与签名s,返回类型为r的公共抽象成员方法米,和throws子句吨对应于每个公共实例方法米与签名s,返回类型r,并抛出在Object中声明的子句t,除非具有相同签名,相同返回类型和兼容throws子句的抽象方法由接口显式声明。
答
由于所有对象都扩展了Object
和Object
有一个toString()
您正在调用该方法。
谢谢,这非常有帮助 –