Java保护修饰符可在具有相同包名称的另一个包中访问

时间:2014-08-21 08:37:34

标签: java package protected

我已经用Java编程了一段时间,我才意识到protected访问修饰符也允许在相同的包中访问成员。所以这里是情况和问题:

我有一个具有protected方法的类,以及一个使用Mockito来测试该方法的测试类。这两个类位于不同的文件夹中( src test ),但它们的包名是相同的!有趣的是,我可以在测试类中调用受保护的方法!我想知道它是如何可能的?因为他们的包名是一样的吗?在这种情况下,protected修饰符允许非常广泛的访问!

2 个答案:

答案 0 :(得分:1)

如果包名相同,则这两个类在同一个包中 - 它就这么简单。它们是从不同的源目录构建的这一事实无关紧要 - 标识包的唯一事物是它的完全限定名称。

答案 1 :(得分:1)

包名称表示编译器将放置.class文件的目录结构。如果将编译具有相同包名但包不同(不知道如何)的两个java文件,它们将被放置在同一目录中。

可以访问受保护的字段。

简而言之,您不能为不同的包提供相同的包名,java会将它们视为同一个包。