这样理解:
一个java文件在编译的时候,都会使用的其他的类,那么就需要查找其他类文件,加载到内存中。
如果发现有对应名称的class文件,就使用对应的class文件。如果没有找到对应的class文件,就将对应名称的java文件编译成对应的class文件。
如果java文件名和其中的类名不相符,java编译器为了找这个类,就有可能需要找很多java文件中,看是否有对应的类。这是相当低效的,而且也不安全(如果两个java文件都有同一个类,到底该使用那个呢?)。所以java文件名必须和其类名相符。为什么是public后面说。
java的体系是一层包一层,项目中有包,包中有java文件,java文件中有类,类里有成员变量和成员函数,成员函数中还有语句和变量。那么就需要对这些东西加上访问说明:
比如for(int x = 0; x<10;x++)这个里面的x到底是那个x呢,每个变量、方法、类、java文件都应该具备自己的一个影响、作用范围。所以才出现了public private等修饰符。
没有加publick的类,在这个java文件中可以使用。其他java文件就未必可以使用,但加了public的类,其他类也可以调用。再结合上面的java编译器查找类的一个过程,大概就可以理解为什么一个java文件只能有一个public类了。 |