Java 默认包中定义的类的可访问性

Java 默认包中定义的类的可访问性,java,class,package,access-modifiers,Java,Class,Package,Access Modifiers,例如,我有一个文件example.java,其中包含以下代码: class Example { ... } 在另一个文件ExamplePublic.java中,我有: public class ExamplePublic { ... } 因此,没有包定义。在这种情况下,类位于“未命名包”中 我想了解的是,在这种情况下,行为是否与指定包的行为相同:示例类具有“包私有”(默认)可见性(在未命名包中),而ExamplePublic类可以从所有其他包访问(因为它是公共的) 或者默认包是否有任何更改

例如,我有一个文件example.java,其中包含以下代码:

class Example { ... }
在另一个文件ExamplePublic.java中,我有:

public class ExamplePublic { ... }
因此,没有包定义。在这种情况下,类位于“未命名包”中

我想了解的是,在这种情况下,行为是否与指定包的行为相同:示例类具有“包私有”(默认)可见性(在未命名包中),而ExamplePublic类可以从所有其他包访问(因为它是公共的)

或者默认包是否有任何更改


谢谢。

来自官方文件

  • 访问级别修饰符确定其他类是否可以使用特定字段或调用特定方法。有两个级别的访问控制: 在顶级public或package private(无显式修改器)
  • 在成员级别上为public、private、protected或package private(无显式修改器)
一个类可以用修饰语public声明,在这种情况下,该类对任何地方的所有类都可见。如果类没有修饰符(默认值,也称为包专用),则它仅在其自己的包中可见(包是相关类的命名组-您将在后面的课程中了解它们


Java 6官方文件:

从未命名包导入类型是编译时错误


如果你想使用这个技巧,你可以这样做: