为什么实现接口的类不能在Java中使用该接口的静态方法?

时间:2017-07-23 04:49:03

标签: java interface static default

考虑实现具有A方法B的接口static的类info()。为什么不能A.info()?如果它是一个默认方法,那么可能会A.info(),我不明白为什么会有区别:它们是两种不是abstract但已在interface,差异应该只是一个是static而另一个不是。

2 个答案:

答案 0 :(得分:0)

请记住:静态方法没有多态性。

所以,当你有两个 A和B时 - 是的,那么你可以调用A.info()。但这是一种沮丧的做法 - 因为你仍在从B调用静态方法。

因此猜测:Java语言背后的人只是想阻止人们开始滥用接口中的静态方法。

答案 1 :(得分:0)

存在差异,因为您可以实现多个接口。如果你有一个接口C,它也有一个静态方法info()并且你在A类中实现了B和C,那会怎么样呢?这就会产生一个问题,这就是为什么它不被允许的原因。

但是当你有两个A和B类时,那么它是可能的,因为你只能扩展一个类。