-2

编辑以修复被标记为重复或更清楚为什么它似乎是重复的。当时我不知道这个包和默认值在哪里,因此这篇文章的原因是一样的。


现在我在准备我的 Java 考试时通过考试问题,我有一个问题要我解释访问修饰符并询问我关于包修饰符的问题。

我可以找到有关私有、受保护、公共和默认的信息,但在 Package 上找不到任何内容。

有人可以给我答案或将我链接到有关它的文章吗?

4

2 回答 2

7

package-private不是真正的修饰符。您无法键入package-private并让系统将其识别为访问修饰符。这实际上是默认设置,不包含任何其他修饰符。

这意味着给定的成员只能在同一个包中访问。

例如,com.hexafraction.Cow可以使用 in 中的默认修饰符(实际上没有)访问成员com.hexafraction.Dog,但com.foo.Crow不能访问该成员,因为它不在同一个包中。

在此示例中,以下内容组成Cow

pacakge com.hexafraction;
class Cow{
    void moo(){ //no public, protected, or private modifier
        System.out.println("moo!");
    }
}

未来的编辑:在 Java 8 中,package应该是为此所需的修饰符。字面输入default在这里仍然不适用。

于 2013-07-29T17:00:41.333 回答
3

所谓的“包私有”访问级别是在没有修饰符的情况下发生的,例如private,protectedpublic

例子:

public class Test {
    int test;  // package-private
}

同一个包中的任何东西,即使是不相关的类,都可以访问它,但包外的其他类(甚至是该类的子类)不能访问它。

这个指向该主题的 Java 教程的链接应该会有所帮助。

于 2013-07-29T17:02:24.637 回答