Java中的访问修饰符

时间:2013-07-29 16:58:57

标签: java access-modifiers


修改被标记为重复或更清楚为什么它似乎是重复。当时我不知道那个包和默认的地方因为这个帖子的原因相同。


现在我正在准备我的Java考试的考试问题,我有一个问题要求我解释访问修饰符,并向我询问有关修饰符的问题。

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

有人可以给我一个答案或链接我一篇关于它的文章吗?

2 个答案:

答案 0 :(得分:7)

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

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

例如,com.hexafraction.Cow可以在com.hexafraction.Dog中访问具有默认修饰符(实际上没有)的成员,但com.foo.Crow无法访问该成员,因为它不在同一个pacakge中。< / p>

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

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

编辑未来:在Java 8中,package将被认为是此需要的修饰符。字面上输入default仍然不适用于此。

答案 1 :(得分:3)

所谓的“包私有”访问级别是在没有privateprotectedpublic等修饰符的情况下发生的。

示例:

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

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

This link to the Java tutorial on the subject应该有帮助。