在一个.java文件中可以有多个同级类, 其修饰符只可以public/abstract/final/和无修饰符
1.public修饰的只能有一个,且必须要与文件名相同:
因为jvm虚拟机为了提高查找类的速度,使用import语句导入的时候,只会导入对应空间的文件名所对应的class文件,而public文件是大家都要使用的,因此直接导入这个类名对应的class文件即可。
import com.by.comm.OpenFile;
com.by.comm 包名
OpenFile 类文件名
OpenFile.open(System.in);
OpenFile : 类名
open(System.in)方法名
以上也解释了为什么会有静态引用,静态应用直接引入所有类的静态属性、方法。后面可以直接使用,无须通过类名引用
2.若没有public的则可与文件名不同
Java编译器在编译的时候,如果整个Java文件(编译单元)都没有public类(对外的公开接口类),类加载器子就无需从这方面直接去加载该编译单元产生的所有的字节码文件(.class文件),那么也就是无需去寻找编译后字节码文件存放位置。而类名和文件名一致是为了方便虚拟机在相应的路径中找到相应的类所对应的字节码文件。所以在没有public类的Java文件中,文件名和类名都没什么联系。
3.该文件同级的类之间可以互相调用,但是除了public的类,其他不能够在其他文件调用
在一个.java文件中由类/Enum/接口/Anontation其中至少一个类型组成。单独一个方法/变量不能独自存在与文件中,所以公用方法的封装也是做成类方法。原因是java是类加载机制,需要编译一个java文件成多个class文件,当类来使用。
4.用javac 编译这个.java文件的时候,它会给每一个类生成一个.class文件
-