为什么abstract不适用于接口隐式方法?

时间:2014-06-29 02:51:16

标签: java interface abstract jls

在阅读接口的JLS Specification时,我遇到了以下短语:

  

如果接口没有直接的超级接口,那么接口   隐式声明带有签名的公共抽象成员方法m   s,返回类型r,以及对应于每个公共的throws子句t   具有签名s的实例方法m,返回类型r和throws子句t   在Object中声明,除非具有相同签名的方法相同   返回类型,并且显式声明了兼容的throws子句   界面。

所以我的问题是当我们实现一个接口时为什么我们不被强制覆盖在Object类中声明的隐式方法,即使它们在接口中被隐式定义为抽象。 希望我把自己搞定。

感谢。

2 个答案:

答案 0 :(得分:6)

所有类隐式地extend Object,直接或通过某些超类链。因此,您不必显式覆盖接口中声明的隐式方法,因为您从Object继承了实现。

答案 1 :(得分:0)

接口的要点是强制您实现某种方法。一切扩展Object的原因是我们希望有一些方法来处理所有类,而不依赖于实现。没有理由每个类都应该实现类似getClass()的东西,因为行为总是相同的。