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

Java 9:接口中的默认方法v/s私有方法,java,java-9,Java,Java 9,众所周知,Java9接口也将支持私有方法。所以现在在接口中,您可以声明私有方法和默认方法。这两种方法都应该有相似之处。我发现了一些这样的问题,没有找到更多的要点 根据我的理解,我发现了一个不同点: 接口的默认方法在子类中可见,其中as private方法由于private修饰符而不可见 我的问题是,除此之外还有其他区别吗?。当我们在设计API或结构时必须使用私有方法和默认方法时。假设您有一个带有两个默认方法的接口:a和b。这两个方法共享一些公共逻辑,您可以将其放入私有方法c中 在Java8中,上

众所周知,Java9接口也将支持私有方法。所以现在在接口中,您可以声明私有方法和默认方法。这两种方法都应该有相似之处。我发现了一些这样的问题,没有找到更多的要点

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

接口的默认方法在子类中可见,其中as private方法由于private修饰符而不可见


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

假设您有一个带有两个默认方法的接口:a和b。这两个方法共享一些公共逻辑,您可以将其放入私有方法c中

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


因此,当您将要放入的实现特定于接口本身而不是外部世界实现它时,您应该将方法标记为私有而不是默认值。

从逻辑的角度来看,我认为事情没有改变-您是何时使用私有方法的?隐藏什么?不复制代码?这里也有同样的东西-在需要时使用它,特别是当可能有一些代码是通用的(例如多个其他方法)时,或者只是想隐藏它。

如果某个默认方法需要一个本地方法,而不是公开的,请将其设为私有方法。*要隐藏某些东西?*明白这点了。@ArvindKatte在没有公开私有方法及其所有实现细节的情况下从链接中得到答案,我相信是相同的。@nullah!很好的一点——不幸的是,我还没有读到这个相关的问题。这看起来确实像一个复制品。但有时,包括我在内,会在副本中找到更好的答案;但似乎我几乎没有增加任何附加值:|你认为我们应该这样关闭这个吗?