【问题标题】:Accessibility of a class defined in the default package [duplicate]默认包中定义的类的可访问性[重复]
【发布时间】:2018-02-16 13:24:43
【问题描述】:

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

class Example { ... }

而且,在另一个文件 ExamplePublic.java 我有:

public class ExamplePublic { ... }

因此,没有包定义。在这种情况下,这些类位于“未命名的包”中。

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

或者默认包有什么变化?

谢谢。

【问题讨论】:

    标签: java class package access-modifiers


    【解决方案1】:

    来自官方文档 Oracle

    • 访问级别修饰符确定其他类是否可以使用特定字段或调用特定方法。有两个级别的访问控制: 在顶层——public 或 package-private(无显式修饰符)。
    • 在成员级别 - public、private、protected 或 package-private(无显式修饰符)。

    可以使用修饰符 public 声明一个类,在这种情况下,该类对任何地方的所有类都是可见的。如果一个类没有修饰符(默认值,也称为包私有),则它仅在其自己的包中可见(包被命名为相关类的组 - 您将在后面的课程中了解它们。)

    【讨论】:

      【解决方案2】:

      Java 6 官方文档:http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.5

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

      【讨论】:

      猜你喜欢
      • 2023-03-14
      • 2018-04-29
      • 2011-06-26
      • 2011-10-11
      • 2010-09-21
      • 2011-04-10
      相关资源
      最近更新 更多