有一个源文件文件abc.java,
1.这个文件只能有一个public类,并且类名字为abc?
2.这个文件中只能有类abc被包外存取?
3.如果这个文件还有其他非public的类,比如xxx.问题是当这个文件被编译后就会产生独立的abc.class, xxx.class,然后当这些class文件放在一起,从包外的角度怎么知道abc是public类可存取,xxx就不行呢?或者java编译器是怎么知道abc能被其他包用而xxx不行,是abc.class和xxx.class包含它自己的access属性吗?

解决方案 »

  1.   

    不明白,似乎是说你在同一个文件中写多个类,但是只有一个类是public类型的,不用什么属性,public声明的类,所有的类都可以引用,别的就是逐渐减小,protected的是子类可以访问,default的是同一个包可以访问.
      

  2.   

    生成的class文件中有访问权限的描述。
      

  3.   

    没研究过,不过在生成的,*.class文件中是应当包含该类的访问限定的
      

  4.   

    补充一下,第三个问题其实是说如果在源文件层面,大家都可以从字面上看出来哪个类是公共的,问题是编译成class文件供包外程序用的时候,大家都众生平等了,从哪里能知道什么类是public的呢?
      

  5.   

    如果要让一个类在其他包里可用,就把它声明为public的,并放在单独的java文件中.