Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在Java中定义一个只有同一包中的其他类才能访问的私有类?_Java_Oop_Private_Java Package - Fatal编程技术网

有没有办法在Java中定义一个只有同一包中的其他类才能访问的私有类?

有没有办法在Java中定义一个只有同一包中的其他类才能访问的私有类?,java,oop,private,java-package,Java,Oop,Private,Java Package,我一直在思考这样一个问题:为什么在Java包中定义private类不像在命名空间中定义类那样是不可能的 假设我的Java项目中有一个ds包。在这个包中,我有两个名为Stack和Queue的类。这两个类都需要使用另一个名为ListNode的类ListNode仅为ds包中的其他类所需,不应暴露于ds包之外的类 我可以将ListNode定义为一个内部类。但是在这种情况下,我应该在Stack和Queue类中定义它,它也是冗余的。有什么设计模式可以解决这个问题吗?如果没有,请至少有人向我解释为什么这在Ja

我一直在思考这样一个问题:为什么在Java包中定义
private
类不像在
命名空间中定义
类那样是不可能的

假设我的Java项目中有一个
ds
包。在这个包中,我有两个名为
Stack
Queue
的类。这两个类都需要使用另一个名为
ListNode
的类
ListNode
仅为
ds
包中的其他类所需,不应暴露于
ds
包之外的类


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

您可以查看包私有类。


如果从类中省略public/private/protected,则只有同一包中的其他类才能访问该类

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

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        

From

package private=无访问修饰符