当前位置: 首页 > 知识库问答 >
问题:

为什么Java不允许在接口中使用私有成员?

颛孙安康
2023-03-14

为什么Java不允许在接口中使用私有成员?有什么特别的原因吗?

共有3个答案

沈琨
2023-03-14

私有接口方法是Java 9的一部分,也是JEP-213的一部分。由于Java 8中的接口可以有默认方法,所以私有方法允许多个默认方法使用共享私有方法。

章光华
2023-03-14

在Java9中,接口中的私有方法是可能的。

Java 9规范

javac编译器团队很高兴地宣布,从JDK的9B54版本开始,接口中的私有方法可以获得编译器支持。

谭健柏
2023-03-14

根据Java语言规范,(访问控制):

Java编程语言提供访问控制机制,以防止包或类的用户依赖该包或类实现的不必要细节

访问控制就是隐藏实现细节。接口没有要隐藏的实现。

 类似资料:
  • 虽然有些人曾经问过这个问题,但那是在Java8发布之前。 以前,静态成员是不允许的,因为实现细节不能在接口中定义。这也是为什么任何东西都不应该是私有的,因为接口的实现者需要提供实现细节。 Java8改变了这种情况,不是吗?默认方法定义实现细节,静态方法也是如此。那么,为什么仍然不允许这样做呢?

  • 问题内容: Java 8最有用的功能之一是接口上的新方法。引入它们的原因基本上有两个(可能还有其他原因): 提供实际的默认实现。例: 允许JDK API演进。例: 从API设计人员的角度来看,我希望能够在接口方法上使用其他修饰符,例如。在添加便捷方法时,这将很有用,以防止在实现类时“意外”覆盖: 如果已经上过课,以上是已经很普遍的做法: 现在,并且显然是相互矛盾的关键字,但是默认关键字本身并没有严

  • 问题内容: 为什么在Java 8中允许接口具有方法? 如下面的代码所述,它可以正常工作并正确产生输出。 目前它的行为就像一个类,我已经用main方法执行了。 我们为什么需要这个? 问题答案: 从Java 8开始,接口中允许使用静态方法。 main()是静态方法。 因此,在接口中允许main()。 我们 不需要 它,因为以前不允许这样做,但是我们幸存了下来。但是,根据定义,由于静态方法不是绑定到类的

  • 问题内容: 我读了这个问题,并认为如果可以写的话,很容易解决(不是没有它就不能解决): 我不确定在很多情况下它是否有用,但是我想知道为什么它没有用,以及其他语言中是否存在类似的东西。 你们有什么感想? 编辑: 澄清一下:是的,我知道,这在Java中是不可能的,我也不是很想念它。这不是我期望的工作,并且惊讶于出现编译器错误。我只是有这个主意,喜欢讨论它。 问题答案: 它违反了封装。你不应该能够绕过父

  • 在Java中,不允许多重继承,但是在Java8之后,接口可以有默认方法(可以实现方法本身),就像抽象类一样。在此上下文中,还应该允许it多重继承。