package-private的Java默认类访问类似于public

时间:2013-04-07 20:58:24

标签: java class access-modifiers

如许多地方所述,一个类产生一个包私有访问级别,这意味着这样的类只能被其他人访问是同一个包。我不知道很多关于包装的东西,但我想知道你添加包装x"在文件的开头是足够的知识提出我的问题。

我用类成分制作了一个文件。另一个文件包含

public class cooking{ 
    public static void main(String[] args) {.....

任何地方都没有包裹声明。不过,我的程序成功编译了两个文件,并且也运行了。我错过了什么?烹饪班不应该看不到成分吗?

4 个答案:

答案 0 :(得分:1)

你的IDE(比如netbeans或eclipse)编译代码,因为这两个类都在同一个项目中,并且“知道”你的意思是那个类。

答案 1 :(得分:1)

类可以在没有import语句的情况下查看同一目录中的其他类。包是组织代码的方法,实际上只是应用程序文件夹中的目录。所有类都可以在不需要导入的情况下查看同一类中的其他类,当定义了不同的包时,例如您的结构是:

src
 |
 +- Cooking.java
 |
 +- utilities
     |
     +- Ingredient.java

当然,您的Ingredient文件将以package utilities;开头,如果您尝试从烹饪中访问它,除非您在文件中有import utilities.Cooking;,否则会收到错误。 Package-private只是意味着包(或文件夹)之外的类无法查看或访问该文件或它的Package-private属性。

答案 2 :(得分:1)

如果你没有向java类添加一个package语句,那么这些类在同一个包中=所谓的“默认”包。因此,无论您是否将类定义为公共类,这些类都可以相互访问。

public class A

=此类A在所有包中都可见

class B

=此类B仅由与B

相同的包中的类可见

答案 3 :(得分:1)

正如Java语言规范中所述,您的类是(未)命名包的一部分,这就是他们可以看到彼此的原因。

http://docs.oracle.com/javase/specs/jls/se7/html/jls-7.html#jls-7.4.2