在阅读接口的JLS Specification时,我遇到了以下短语:
如果接口没有直接的超级接口,那么接口 隐式声明带有签名的公共抽象成员方法m s,返回类型r,以及对应于每个公共的throws子句t 具有签名s的实例方法m,返回类型r和throws子句t 在Object中声明,除非具有相同签名的方法相同 返回类型,并且显式声明了兼容的throws子句 界面。
所以我的问题是当我们实现一个接口时为什么我们不被强制覆盖在Object
类中声明的隐式方法,即使它们在接口中被隐式定义为抽象。
希望我把自己搞定。
感谢。
答案 0 :(得分:6)
所有类隐式地extend Object
,直接或通过某些超类链。因此,您不必显式覆盖接口中声明的隐式方法,因为您从Object
继承了实现。
答案 1 :(得分:0)
接口的要点是强制您实现某种方法。一切扩展Object的原因是我们希望有一些方法来处理所有类,而不依赖于实现。没有理由每个类都应该实现类似getClass()的东西,因为行为总是相同的。