Java 9:接口中的默认方法v / s私有方法

时间:2017-11-22 13:31:37

标签: java java-9

众所周知,Java 9接口也支持private方法。现在,在接口中,您可以声明private方法以及default方法。这两种方法都应该有身体(我可以说它是相似的)。我发现了一些像Java 9: private interface methods, example use-case?这样的问题,没有找到更多的分数。

根据我的理解,我发现了一个不同之处:

接口的

default方法在子类中可见,因为private修饰符导致private方法不可见。

我的问题是,除此之外还有其他区别吗?我们在设计API或结​​构时必须使用private方法和default方法。

2 个答案:

答案 0 :(得分:4)

假设您有两个default方法的界面:a()b()。这两种方法共享一些通用逻辑,您可以将其放在private方法c()中。

在Java8中,上述方法c()必须是公开的,即使它只是接口的内部实现。在接口中引入private之前,用这种默认方法编写一个干净的接口比较困难。

因此,当您即将投入的实施特定于接口本身而不是实施它的外部世界时,您应标记方法private而不是default。< / p>

答案 1 :(得分:3)

对于我来说,从逻辑的角度来看,事情没有改变 - 到目前为止你使用private方法的时候是什么时候?隐藏什么?不重复代码?同样的事情就在这里 - 当你需要时使用它,特别是当可能存在 common 的代码时,例如对于其他多种方法,或者只是想要隐藏它。