【问题标题】:Is there any way to define a private class in Java which only other classes in the same package can access it?有没有办法在Java中定义一个私有类,只有同一个包中的其他类才能访问它?
【发布时间】:2015-04-21 03:04:50
【问题描述】:

我一直有这个问题,为什么在 Java 中的包中定义 private 类不像我们在 .Net 中的 namespace 中定义它的方式一样。

假设我的 Java 项目中有一个 ds 包。我在这个包中有两个名为StackQueue 的类。这两个类都需要使用另一个名为ListNode 的类。 ListNode 只有ds 包中的其他类需要,并且不应暴露给ds 包之外的类。

我可以将ListNode 定义为内部类。但在这种情况下,我应该在StackQueue 两个类中定义它,而且它也是多余的。是否有任何设计模式可以解决这个问题?如果不是,请至少有人解释一下为什么这在 Java 中是不可能的!

【问题讨论】:

  • 包私有 = 无访问修饰符

标签: java oop private java-package


【解决方案1】:

您可以查看包私有类。 docs

如果你在你的类中省略了 public/private/protected,它只能被同一个包中的其他类访问

【讨论】:

    【解决方案2】:

    下表显示了每个修饰符允许的成员访问权限。

    Access Levels
    Modifier    Class   Package Subclass    World
    public       Y        Y        Y          Y
    protected    Y        Y        Y          N
    no modifier  Y        Y        N          N
    private      Y        N        N          N        
    

    来自here

    【讨论】:

      猜你喜欢
      • 2016-07-09
      • 2011-09-30
      • 2011-08-22
      • 2021-05-09
      • 1970-01-01
      • 1970-01-01
      • 2019-12-05
      • 1970-01-01
      • 2010-11-05
      相关资源
      最近更新 更多