接口java.util.Map是否覆盖对象类中的hashCode()和equals()

接口java.util.Map是否覆盖对象类中的hashCode()和equals(),java,oop,object,dictionary,inheritance,Java,Oop,Object,Dictionary,Inheritance,根据的Java文档,hashCode和equals方法从对象类重写。但是接口不继承自对象类,那么Map接口如何覆盖对象类的方法呢?Javadoc意味着每个实现类都应该覆盖方法,以实现Javadoc中记录的行为。这是因为接口不能被实例化为接口。您将其用作接口,但JVM引用的是实现该接口的对象实例,因此作为一个对象,它具有toString、hashCode和equals。(即使在实现类中没有重写它们,它们也不能按预期工作)注释对继承自对象的方法有特殊考虑: 引用Java语言规范: 如果使用注释@Ov

根据的Java文档,
hashCode
equals
方法从
对象
类重写。但是接口不继承自
对象
类,那么
Map
接口如何覆盖
对象
类的方法呢?

Javadoc意味着每个实现类都应该覆盖方法,以实现Javadoc中记录的行为。

这是因为接口不能被实例化为接口。您将其用作接口,但JVM引用的是实现该接口的对象实例,因此作为一个对象,它具有toString、hashCode和equals。(即使在实现类中没有重写它们,它们也不能按预期工作)

注释对继承自
对象的方法有特殊考虑:

引用Java语言规范:

如果使用注释
@Override
对方法声明进行注释,但该方法未重写或实现在超类型中声明的方法,或者该方法的重写与
对象
公共
方法不同,则会发生编译时错误

这意味着
@Override
可以注释将从实现类中的
对象
继承的接口方法,即使接口本身不是从
对象
继承的


它用于防止意外声明与
对象
方法冲突的接口方法。

简单回答:它没有。它提供了具体实现的规范,但本身不能覆盖任何内容,它也不能强制执行这些规范。我相信,严格来说,这些规范不再是真实的。
接口
可以覆盖父
接口
中的
默认
方法@AminJ:true,但此向后兼容的接口不会覆盖methods@AminJ严格说来也不是真的。
接口
只能覆盖父
接口
的行为。原始行为总是可以从继承的
类调用
——这与重写有许多不同之处。
s/has to/should/g
。这同样没有什么意义,因为java中的所有类都继承了对象类,所以为什么我们必须在Map接口中分别提到hashcode和equals方法,关键不是这些方法存在,而是它们的作用。