有没有办法在Java中定义一个私有类,只有同一个包中的其他类可以访问它?

时间:2015-04-21 03:04:50

标签: java oop private java-package

我一直都有这个问题,为什么我们无法像在privatenamespace中定义类的那样在Java中定义.Net类。 {1}}。

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

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

2 个答案:

答案 0 :(得分:3)

您可以查看包私有类。 docs

如果您省略了公共/私人/受保护的类,则只能由同一个包中的其他类访问

答案 1 :(得分: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